vinyld(1) General Commands Manual vinyld(1)

vinyld - دیمن شتاب‌دهنده HTTP

[-a [name=][listen_address[,PROTO|,option=value,...]] [-b [host[:port]|path]] [-C] [-d] [-E extension] [-F] [-f config] [-h type[,options]] [-I clifile] [-i identity] [-j jail[,jailoptions]] [-l vsl] [-M address:port] [-n workdir] [-P file] [-p param=value] [-r param[,param...]] [-S secret-file] [-s [name=]kind[,options]] [-T address[:port]] [-t TTL] [-V] [-W waiter]

vinyld [-x parameter|vsl|cli|builtin|optstring]

vinyld [-?]

دیمن vinyld درخواست‌های HTTP را از کلاینت‌ها می‌پذیرد، آن‌ها را به یک سرور پس‌زمینه (backend) منتقل می‌کند و اسناد بازگردانده‌شده را کَش می‌کند تا به درخواست‌های آتی برای همان سند با کارایی بهتری پاسخ دهد.

ساختار کلی برای پذیرش درخواست‌های کلاینت روی یک listen_address. برای جزئیات به ادامه مراجعه کنید.

نام (Name) در گزارش‌ها ارجاع داده می‌شود و در VCL با عنوان local.socket در دسترس است. اگر نام مشخص نشود، از حرف a همراه با یک توالی عددی ("a0"، "a1" و غیره) استفاده می‌شود.

هر آرگومان پس از listen_address که با ویرگول جدا شده باشد، در صورتی که حاوی = باشد به عنوان یک جفت option=value گیرنده (acceptor)، و در غیر این صورت به عنوان انتخاب پروتکل (PROTO) در نظر گرفته می‌شود.

گزینه‌های معتبر به نوع گیرنده بستگی دارند؛ به ادامه متن مراجعه کنید.

مقدار PROTO می‌تواند "HTTP" (پیش‌فرض) یا "PROXY" باشد. هر دو نسخه ۱ و ۲ پروتکل proxy قابل استفاده هستند.

استفاده از چند آرگومان -a مجاز است.

اگر هیچ آرگومان -a داده نشود، پیش‌فرض -a :80 روی تمام رابط‌های IPv4 و IPv6 گوش فرا می‌دهد.

مقدار ip_address می‌تواند یک نام میزبان ("localhost")، یک نشانی IPv4 چهاربخشی نقطه‌دار ("127.0.0.1") یا یک نشانی IPv6 محصور در قلاب ("[::1]") باشد.

مقدار port می‌تواند یک شماره درگاه (80)، نام یک سرویس (http) یا یک محدوده درگاه (80-81) باشد. محدوده‌های درگاه فراگیر هستند و نمی‌توانند همپوشانی داشته باشند. اگر port مشخص نشود، درگاه 80 (http) استفاده می‌شود.

مشخص کردن حداقل یکی از موارد ip_address یا port الزامی است.

(VCL نسخه 4.1 و بالاتر)

پذیرش اتصالات روی یک سوکت دامنه یونیکس (Unix domain socket). مسیر path باید به صورت مطلق ("/path/to/listen.sock") باشد یا با "@" و به دنبال آن نام یک سوکت انتزاعی بیاید ("@myvinyld").

زیرآرگومان‌های user، group و mode می‌توانند برای تعیین مجوزهای دسترسی فایل سوکت استفاده شوند -- برای user و group از نام‌ها و برای mode از یک مقدار ۳ رقمی اکتال استفاده کنید. این زیرآرگومان‌ها برای سوکت‌های انتزاعی اعمال نمی‌شوند.

استفاده از میزبان مشخص‌شده به عنوان سرور پس‌زمینه (backend). اگر port مشخص نشود، پیش‌فرض 8080 است.

اگر مقدار -b با / آغاز شود، به عنوان مسیر مطلق یک سوکت دامنه یونیکس تفسیر می‌شود که vinyld به آن متصل می‌گردد. در این حالت، مقدار -b باید شرایط لازم برای فیلد .path در تعریف backend را برآورده کند؛ به vcl(7) مراجعه کنید. سرورهای پس‌زمینه با آدرس‌های سوکت یونیکس فقط با نسخه‌های VCL بالاتر یا مساوی 4.1 قابل استفاده هستند.

گزینه -b فقط یک بار می‌تواند استفاده شود و نمی‌توان آن را همراه با f به کار برد.

استفاده از فایل پیکربندی VCL مشخص‌شده به جای مقدار پیش‌فرض داخلی. برای جزئیات در مورد نحو VCL به vcl(7) مراجعه کنید.

اگر تنها از یک گزینه -f استفاده شود، نمونه VCL بارگذاری‌شده از فایل، "boot" نام‌گذاری می‌شود و بلافاصله فعال می‌گردد. اگر بیش از یک گزینه -f استفاده شود، نمونه‌های VCL به ترتیبی متناظر با آرگومان‌های -f با نام‌های "boot0"، "boot1" و به همین ترتیب نام‌گذاری می‌شوند و آخرین مورد "boot" نامیده شده و فعال می‌گردد.

باید یا -b یا یک یا چند گزینه -f مشخص شوند، اما نه هر دو، و هیچ‌کدام نیز نمی‌توانند حذف شوند؛ مگر اینکه -d برای راه‌اندازی vinyld در حالت اشکال‌زدایی (debugging) استفاده شود. اگر یک رشته خالی به عنوان تنها گزینه -f مشخص گردد، vinyld بدون شروع فرایند کارگر راه‌اندازی می‌شود و فرایند مدیریتی دستورات CLI را می‌پذیرد. همچنین می‌توانید یک گزینه خالی -f را با یک اسکریپت مقداردهی اولیه (گزینه -I) ترکیب کنید؛ در این صورت اگر در پایان مقداردهی اولیه یک VCL فعال وجود داشته باشد، فرایند فرزند راه‌اندازی خواهد شد.

هنگامی که با یک نام فایل نسبی استفاده شود، config در vcl_path جستجو می‌شود. می‌توان این مسیر را قبل از استفاده از گزینه‌های -f با استفاده از گزینه -p تنظیم کرد. در حین راه‌اندازی، vinyld نسبت به مسیرهای ناامن VCL هشداری نمی‌دهد: برخلاف vinyl-cli(7) که ممکن است بعداً از راه دور قابل دسترسی باشد، راه‌اندازی vinyld نیازمند دسترسی‌های محلی است.

دایرکتوری زمان اجرا برای حافظه اشتراکی، VCLهای کامپایل‌شده و غیره.

در کاربردهایی که کارایی بسیار حیاتی است، این دایرکتوری باید روی یک سیستم‌فایل مبتنی بر حافظه RAM قرار گیرد.

هنگام اجرای چندین نمونه از vinyld، باید از دایرکتوری‌های جداگانه استفاده شود.

مقدار پیش‌فرض از متغیر محیطی VINYL_DEFAULT_N دریافت می‌شود.

مسیرهای نسبی به انتهای مسیر /var/lib/lib/vinyl-cache افزوده خواهند شد.

اگر نه VINYL_DEFAULT_N و نه -n وجود نداشته باشند، مقدار پیش‌فرض /var/lib/lib/vinyl-cache/vinyld خواهد بود.

نکته: این مقادیر پیش‌فرض ممکن است مختص به توزیع باشند.

برای این گزینه‌ها، vinyld اطلاعات را در خروجی استاندارد چاپ کرده و خارج می‌شود. هنگامی که از گزینه -x استفاده می‌شود، این گزینه باید تنها گزینه مشخص‌شده باشد (مستندات را در قالب reStructuredText که به RST نیز معروف است، خروجی می‌دهد).

-?

چاپ پیام راهنمای استفاده.
چاپ مستندات پارامترهای زمان اجرا (گزینه‌های -p)، بخش List of Parameters را ببینید.
چاپ مستندات برچسب‌های استفاده‌شده در گزارش حافظه مشترک Vinyld Cache، vsl(7) را ببینید.
چاپ مستندات رابط خط فرمان، vinyl-cli(7) را ببینید.
چاپ محتویات برنامه پیش‌فرض VCL با نام builtin.vcl.
چاپ پارامتر optstring برای getopt(3) جهت کمک به نوشتن اسکریپت‌های پوششی (wrapper).

انشعاب ایجاد نشود (fork نشود)، در پیش‌زمینه اجرا شود. تنها یکی از گزینه‌های -F یا -d می‌تواند مشخص شود، و -F را نمی‌توان همراه با -C استفاده کرد.
ارائه یک رابط مدیریتی روی آدرس و درگاه مشخص‌شده. برای مستندات دستورهای مدیریتی vinyl-cli(7) را ببینید. برای غیرفعال کردن رابط مدیریتی از none استفاده کنید.
اتصال به این درگاه و ارائه رابط خط فرمان. آن را مانند یک شل معکوس (reverse shell) در نظر بگیرید. هنگام اجرا با -M در صورتی که هیچ پس‌اندازی (backend) تعریف نشده باشد، فرایند فرزند (حافظه پنهان) در ابتدا آغاز به کار نخواهد کرد.
نوشتن PID فرایند در فایل مشخص‌شده.
مشخص کردن شناسه کارساز Vinyl Cache. این مقدار با استفاده از server.identity از طریق VCL قابل دسترسی است.

شناسه کارساز برای فیلد received-by در هدرهای Via تولیدشده توسط Vinyl Cache استفاده می‌شود. به همین دلیل، باید یک نشانه (token) معتبر بر اساس دستور زبان HTTP باشد.

اگر مشخص نشود، از خروجی gethostname(3) استفاده می‌شود که در این حالت درستی ساختار نحوی آن فرض می‌شود.

اجرای دستورهای مدیریتی موجود در فایل داده‌شده تحت عنوان clifile پیش از شروع فرایند کارگر (worker process)، بخش CLI Command File را ببینید.
بارگذاری افزونه با نام مشخص‌شده. افزونه‌ها ماژول‌هایی (VMODها) هستند که می‌توانند رفتار vinyld را خارج از VCL تغییر دهند؛ برای نمونه با افزودن پیاده‌سازی‌های ذخیره‌سازی یا پروتکل. افزونه‌ها همواره VMOD نیز هستند، حتی اگر هیچ قابلیتی به VCL ارائه ندهند، هرچند در بیشتر موارد ارائه می‌دهند.

هر VMOD می‌تواند به عنوان یک افزونه بارگذاری شود، که در این حالت صرفاً هنگام راه‌اندازی از پیش بارگذاری شده و از تخلیه شدن آن از حافظه جلوگیری می‌شود.

اگر extension دارای هرگونه ممیز / باشد، به عنوان یک مسیر مطلق در نظر گرفته می‌شود. در غیر این صورت، برای extension با نام ext، فایل vmod_ext.so در vmod_path جستجو می‌شود.

در صورتی که بارگذاری افزونه به هر دلیلی با شکست مواجه شود، راه‌اندازی vinyld ناموفق خواهد بود.

طول عمر پیش‌فرض (TTL) را برای اشیاء ذخیره‌شده در حافظهٔ پنهان مشخص می‌کند. این گزینه یک میان‌بُر برای تعیین پارامتر زمان اجرای default_ttl است.
پارامتر مشخص‌شده توسط param را بر روی مقدار تعیین‌شده تنظیم می‌کند؛ برای جزئیات به بخش فهرست پارامترها (List of Parameters) مراجعه کنید. این گزینه می‌تواند چندین بار برای تعیین چندین پارامتر به کار رود.
از پشتیبان ذخیره‌سازی (storage backend) مشخص‌شده استفاده می‌کند. بخش Storage Backend را ببینید.

این گزینه می‌تواند چندین بار برای تعیین چندین فایل ذخیره‌سازی به کار رود. از name در لاگ‌ها، VCL، آمارها و غیره استفاده می‌شود. اگر name مشخص نشده باشد، به ترتیب از "s0"، "s1" و موارد پس از آن استفاده خواهد شد.

اندازهٔ فضا برای رکوردهای VSL را مشخص می‌کند که کوتاه‌نوشتی برای -p vsl_space=<vsl>; است. پسوندهای مقیاس‌بندی مانند 'K' و 'M' تا سقف گیگابایت (G) قابل استفاده هستند. برای اطلاعات بیشتر vsl_space را ببینید.

پارامترهای فهرست‌شده را فقط‌خواندنی می‌کند. این کار به مدیر سیستم روشی برای محدود کردن توانایی‌های CLI نرم‌افزار Vinyl Cache می‌دهد. فقط‌خواندنی کردن پارامترهایی چون cc_command، vcc_allow_inline_c و vmod_path را مد نظر قرار دهید، چرا که این موارد به طور بالقوه می‌توانند برای ارتقای دسترسی از طریق CLI مورد استفاده قرار گیرند.
مسیر فایلی حاوی یک کلید محرمانه که برای مجازشماری دسترسی به درگاه مدیریت استفاده می‌شود. برای غیرفعال کردن احراز هویت از none استفاده کنید.

اگر این آرگومان ارائه نشود، یک کلید محرمانه برگرفته از PRNG سیستم در فایلی به نام _.secret در پوشهٔ کاری (گزینه opt_n را ببینید) با مالکیت و مجوزهای پیش‌فرض کاربری که vinyld را آغاز کرده نوشته خواهد شد.

بنابراین، کاربرانی که تمایل دارند کنترل vinyld را تفویض کنند احتمالاً مایل به ایجاد یک فایل محرمانهٔ سفارشی با مجوزهای دسترسی مناسب خواهند بود (یعنی قابل خواندن توسط یک گروه یونیکس که قرار است کنترل به آن تفویض شود).

سازوکار ایزوله‌سازی (jail) مورد استفاده را مشخص می‌کند. بخش Jail را ببینید.

حالت اشکال‌زدایی (debugging) را فعال می‌کند: فرایند والد در پیش‌زمینه همراه با یک اتصال CLI روی stdin/stdout اجرا می‌شود، و فرایند فرزند باید صراحتاً با یک دستور CLI راه‌اندازی شود. خاتمه دادن به فرایند والد فرایند فرزند را نیز خاتمه خواهد داد.

تنها یکی از گزینه‌های -d یا -F می‌تواند تعیین شود، و -d نمی‌تواند همراه با -C استفاده شود.

کد VCL کامپایل‌شده به زبان C را چاپ کرده و خارج می‌شود. فایل VCL مورد نظر برای کامپایل را با گزینهٔ -f تعیین کنید. همراه با -C باید حتماً یکی از گزینه‌های -f یا -b به کار رود، و -C نمی‌تواند همراه با -F یا -d استفاده شود.
شمارهٔ نسخه را نمایش داده و خارج می‌شود. این باید تنها گزینهٔ ارائه‌شده باشد.
الگوریتم درهم‌سازی (hash) را مشخص می‌کند. برای فهرستی از الگوریتم‌های پشتیبانی‌شده به بخش Hash Algorithm مراجعه کنید.
نوع waiter مورد استفاده را مشخص می‌کند.

الگوریتم‌های درهم‌سازی زیر در دسترس هستند:

یک ساختار درختی خودبزرگ‌شونده (self-scaling). الگوریتم درهم‌سازی پیش‌فرض در Vinyl Cache نسخهٔ 2.1 و پس از آن. در مقایسه با درخت B سنتی، درخت critbit تقریباً کاملاً بدون قفل (lockless) است. این گزینه را تغییر ندهید مگر آن‌که دقیقاً بدانید چه کاری انجام می‌دهید.
یک فهرست پیوندی دوطرفهٔ ساده. برای استفاده در محیط‌های عملیاتی (production) توصیه نمی‌شود.
یک جدول درهم‌سازی استاندارد. کلید درهم‌سازی برابراست با باقیماندهٔ تقسیم مقدار CRC32 آدرس URL شیء بر اندازهٔ جدول درهم‌سازی. هر مدخل در جدول به فهرستی از عناصر اشاره می‌کند که کلید درهم‌سازی مشترکی دارند. پارامتر buckets تعداد مدخل‌های درون جدول درهم‌سازی را تعیین می‌کند. مقدار پیش‌فرض 16383 است.

می‌توان چندین بک‌اند ذخیره‌سازی (جایی که اشیاء کَش‌شده و در حال انتقال نگهداری می‌شوند) تعریف کرد، و VCL می‌تواند با تنظیم متغیر beresp.storage تعیین کند که از کدام حافظه استفاده شود (برای اطلاعات بیشتر man vcl-var را ببینید).

قالب آرگومان برای تعریف بک‌اندهای ذخیره‌سازی به این صورت است:

اگر name حذف شود، vinyld ذخیره‌سازها را با sN نام‌گذاری می‌کند، که از s0 شروع شده و به ازای هر ذخیره‌ساز جدید، مقدار N یکی افزایش می‌یابد.

برای kind و options به جزئیات زیر مراجعه کنید.

ذخیره‌سازها می‌توانند در VCL به صورت storage.name استفاده شوند؛ بنابراین، برای نمونه اگر myStorage با -s myStorage=malloc,5G تعریف شده باشد، می‌تواند در VCL به این شکل به کار رود:

set beresp.storage = storage.myStorage;

یک name ویژه، Transient است که ذخیره‌ساز پیش‌فرض برای اشیاء غیرقابل کَش ناشی از یک pass، hit-for-miss یا hit-for-pass به شمار می‌رود.

اگر هیچ گزینهٔ -s داده نشود، مقدار پیش‌فرض چنین است:

-s default,100m

اگر هیچ ذخیره‌ساز Transient تعریف نشود، پیش‌فرض یک ذخیره‌ساز نامحدود default خواهد بود، گویی به این صورت تعریف شده است:

-s Transient=default

انواع ذخیره‌سازی و گزینه‌های زیر در دسترس هستند:

نوع ذخیره‌سازی پیش‌فرض، در صورت در دسترس بودن به umem و در غیر این صورت به malloc تبدیل می‌شود.
‏malloc یک بک‌اند مبتنی بر حافظه است.
‏umem یک بک‌اند ذخیره‌سازی است که در بسترهایی که موجود باشد، کارایی بیشتری نسبت به malloc دارد.

برای جزئیات، بخش مربوط به umem را در فصل Storage backends از راهنمای The Vinyl Users Guide ببینید.

بک‌اند file داده‌ها را در یک فایل روی دیسک ذخیره می‌کند. دسترسی به فایل با استفاده از mmap انجام خواهد شد. توجه داشته باشید که این ذخیره‌ساز هیچ ماندگاری کَشی ارائه نمی‌دهد.

مسیر (path) اجباری است. اگر مسیر به یک دایرکتوری اشاره کند، یک فایل موقت در آن دایرکتوری ایجاد شده و بلافاصله پیوند آن حذف (unlink) می‌شود. اگر مسیر به فایلی اشاره کند که وجود ندارد، آن فایل ایجاد خواهد شد.

اگر size مشخص نشود و path به فایلی موجود با اندازهٔ بزرگ‌تر از صفر اشاره کند، اندازهٔ همان فایل استفاده خواهد شد. در غیر این صورت، یک خطا گزارش می‌شود.

آرگومان Granularity اندازهٔ بلوک تخصیص را مشخص می‌کند. مقدار پیش‌فرض آن اندازهٔ صفحهٔ سیستم (page size) یا اندازهٔ بلوک سیستم‌فایل است، هرکدام که بزرگ‌تر باشد.

آرگومان Advice به هسته اعلام می‌کند که vinyld انتظار دارد چگونه از این ناحیهٔ نگاشت‌شده استفاده کند تا هسته بتواند تکنیک‌های مناسب پیش‌خوانی (read-ahead) و کَش‌کردن را انتخاب کند. مقادیر ممکن عبارتند از normal، random و sequential، که به ترتیب متناظر با آرگومان‌های توصیهٔ MADV_NORMAL ،MADV_RANDOM و MADV_SEQUENTIAL در ()madvise هستند. مقدار پیش‌فرض random است.

ذخیره‌سازی ماندگار (Persistent storage). ابزار vinyld اشیاء را به شیوه‌ای در یک فایل ذخیره می‌کند که بقای بیشتر اشیاء را در صورت خاموش شدن برنامه‌ریزی‌شده یا برنامه‌ریزی‌نشدهٔ vinyld تضمین نماید. بک‌اند ذخیره‌سازی persistent مشکلات متعددی دارد و احتمالاً در نسخه‌های آیندهٔ Vinyl Cache حذف خواهد شد.

زندان‌های Vinyl Cache تعمیمی بر روش‌های گوناگون و وابسته به پلتفرم برای کاهش امتیازات فرایندهای vinyld هستند. آن‌ها ممکن است گزینه‌های خاص خود را داشته باشند. زندان‌های در دسترس عبارتند از:

کاهش privileges(5) برای vinyld و زیرفرایندها به حداقل مجموعه مورد نیاز. تنها روی پلتفرم‌هایی که از فراخوانی setppriv(2) پشتیبانی می‌کنند در دسترس است.

آرگومان اختیاری worker می‌تواند برای مشخص کردن امتیازها (به ppriv(1) مراجعه کنید) به منظور گسترش مجموعه مؤثر فرایند کارگر (worker) در vinyld استفاده شود. با اینکه ممکن است امتیازات گسترش‌یافته برای vmodهای سفارشی لازم باشد، اما عدم استفاده از گزینه worker همواره امن‌تر است.

مثال برای اعطای امتیازات پایه به فرایند worker:

-j solaris,worker=basic
حالت پیش‌فرض در پلتفرم‌های لینوکس؛ این گزینه زندان UNIX را با سازوکارهای ویژه لینوکس گسترش می‌دهد:
  • اگر workdir روی یک tmpfs نباشد، هشدار می‌دهد.
  • تلاش می‌کند تا پس از رهاسازی امتیازات، فرایند همچنان قابلیت اشکال‌زدایی و ثبت حافظه (dumpable) را حفظ کند.
  • امکان کنترل تنظیمات transparent hugepage (THP) را فراهم می‌آورد.

thp_setting می‌تواند مقادیر زیر را بپذیرد:

  • ignore: هیچ کاری انجام ندهد.
  • enable: فعال‌سازی THP (یادداشت زیر را ببینید).
  • disable: غیرفعال‌سازی THP.
  • try-disable (پیش‌فرض): تلاش برای غیرفعال‌سازی و نادیده گرفتن خطا در صورت شکست (همراه با صدور یک هشدار).

نکته: از نظر فنی، مقدار enable به معنای «غیرفعال‌سازیِ غیرفعال‌سازی» ("disable the disable") است، بنابراین لزوماً به معنی فعال‌سازی قطعی THP نیست. این نام‌گذاری‌ها برای جلوگیری از نفی دوگانه گیج‌کننده انتخاب شده‌اند.

پیش‌فرض در تمام پلتفرم‌های دیگر، هنگامی که vinyld با شناسه کاربری مؤثر 0 (به‌عنوان کاربر ریشه یا «root») اجرا می‌شود.

با فعال بودن سازوکار زندان unix، برنامه vinyld برای زیرفرایندها به یک کاربر جایگزین تغییر وضعیت می‌دهد و در صورت امکان، شناسه کاربری مؤثر فرایند اصلی را نیز تغییر می‌دهد.

آرگومان اختیاری user تعیین می‌کند که از کدام کاربر جایگزین استفاده شود. مقدار پیش‌فرض آن vinyl است.

آرگومان اختیاری ccgroup گروهی را برای افزودن به زیرفرایندهای vinyld که نیازمند دسترسی به کامپایلر C هستند مشخص می‌کند. این گزینه مقدار پیش‌فرضی ندارد.

آرگومان اختیاری workuser کاربر جایگزین برای اجرای فرایند worker را مشخص می‌کند. مقدار پیش‌فرض آن vcache است.

کاربرانی که برای آرگومان‌های user و workuser تعریف می‌شوند باید دارای گروه اصلی یکسانی باشند.

برای کاربرانی که از Varnish Cache مهاجرت می‌کنند، می‌توان از دستورات پوسته‌ای مشابه زیر برای حذف کاربر و گروه پیش‌فرض قبلی استفاده کرد:

userdel varnish || true
userdel vcache || true
userdel varnishlog || true # to remove reference to varnish group
groupdel varnish || true

برای آماده‌سازی یک سیستم با کاربران پیش‌فرض تحت گروهی با نام vinyl، می‌توان از دستورات پوسته مشابه زیر استفاده کرد:

groupadd vinyl
useradd -g vinyl -d /nonexistent -s /bin/false \
  -c "Vinyl Cache Daemon User" vinyl
useradd -g vinyl -d /nonexistent -s /bin/false \
  -c "Vinyl Cache Worker User" vcache
useradd -g vinyl -d /nonexistent -s /bin/false \
  -c "Vinyl Log User" vinyllog

توجه داشته باشید که تعریف کاربر vinyllog الزامی نبوده و تنها از روی عرف اضافه شده است تا بتوان از آن برای اجرای vinyllog، vinylncsa و دیگر ابزارهای مبتنی بر VSM/VSL استفاده کرد.

گزینه زندان به‌عنوان آخرین چاره: با سازوکار زندان none، برنامه vinyld تمام فرایندها را با همان امتیازاتی که با آن‌ها اجرا شده بود، اجرا خواهد کرد.

اگر گزینهٔ -T مشخص شده باشد، vinyld یک رابط مدیریت خط‌فرمان را روی نشانی و درگاه (port) مشخص‌شده ارائه خواهد داد. روش توصیه‌شده برای اتصال به رابط مدیریتی خط‌فرمان از طریق vinyladm(1) است.

دستورهای دردسترس در vinyl-cli(7) مستند شده‌اند.

گزینهٔ -I اجرای دستورهای مدیریتی دلخواه را هنگام راه‌اندازی vinyld، پیش از آغاز فرایند کارگر (worker process)، ممکن می‌سازد. به‌ویژه، این روش برای بارگذاری پیکربندی‌ها، اعمال برچسب‌ها به آن‌ها، و فعال‌سازی نمونهٔ VCL در زمان راه‌اندازی که از آن برچسب‌ها استفاده می‌کند به کار می‌رود:

vcl.load panic /etc/vinyl-cache/panic.vcl
vcl.load siteA0 /etc/vinyl-cache/siteA.vcl
vcl.load siteB0 /etc/vinyl-cache/siteB.vcl
vcl.load siteC0 /etc/vinyl-cache/siteC.vcl
vcl.label siteA siteA0
vcl.label siteB siteB0
vcl.label siteC siteC0
vcl.load main /etc/vinyl-cache/main.vcl
vcl.use main

هر خط در فایل، از جمله خط پایانی، باید با یک سطر تازه (newline) یا بازگشت به ابتدای سطر (carriage return) پایان یابد، در غیر این صورت ناقص در نظر گرفته می‌شود که یک خطای مهلک (fatal error) است.

اگر دستوری در فایل با پیشوند '-' مشخص شده باشد، شکست در اجرای آن مانع از راه‌اندازی نخواهد شد.

توجه داشته باشید که هنگام تکیه بر فایل دستورهای CLI برای بارگذاری پیکربندی‌ها در زمان راه‌اندازی، درج یک دستور صریح vcl.use جهت انتخاب این‌که کدام VCL باید VCL فعال باشد، الزامی است.

پارامترهای زمان اجرا می‌توانند هنگام راه‌اندازی با گزینهٔ خط‌فرمان -p برای vinyld(1) یا از طریق CLI با استفاده از دستورهای param.set یا param.reset تنظیم شوند. همچنین می‌توان آن‌ها را در زمان راه‌اندازی با گزینهٔ خط‌فرمان -r قفل کرد.

انواع مختلفی از پارامترها وجود دارند که ممکن است فهرستی از مقادیر مشخص را بپذیرند، یا به‌صورت اختیاری یک پسوند واحد دریافت کنند.

یک پارامتر بولی مقادیر on و off را می‌پذیرد.

این پارامتر مقادیر زیر را نیز شناسایی می‌کند:

  • yes و no
  • true و false
  • enable و disable

یک پارامتر bytes به یکی از پسوندهای واحدهای زیر نیاز دارد:

  • b (بایت)
  • k (کیبی‌بایت، 1024 بایت)
  • m (مبی‌بایت، 1024 کیبی‌بایت)
  • g (گیبی‌بایت، 1024 مبی‌بایت)
  • t (تبی‌بایت، 1024 گیبی‌بایت)
  • p (پبی‌بایت، 1024 تبی‌بایت)

واحدهای ضریب را می‌توان با یک b اضافی ضمیمه کرد. برای نمونه 32k معادل 32kb است. واحدهای بایت به بزرگی یا کوچکی حروف حساس نیستند (case-insensitive)..SS ثانیه‌ها (seconds)

یک پارامتر مدت‌زمان (duration) می‌تواند پسوندهای یکای زیر را بپذیرد:

  • ms (میلی‌ثانیه)
  • s (ثانیه)
  • m (دقیقه)
  • h (ساعت)
  • d (روز)
  • w (هفته)
  • y (سال)

اگر پارامتر از نوع مهلت زمانی (timeout) یا موعد (deadline) باشد، مقدار "never" (در صورت مجاز بودن) تأثیر پارامتر را غیرفعال می‌کند.

پارامترهای زمان اجرا با پرچم‌های اختصاری مشخص شده‌اند تا از تکرار چندبارهٔ متن یکسان در جدول زیر جلوگیری شود. معنای این پرچم‌ها به شرح زیر است:

  • experimental

    ما اطلاعات موثقی دربارهٔ مقادیر خوب/بد/بهینه برای این پارامتر نداریم. از بازخوردها بر اساس تجربیات و مشاهدات به‌گرمی استقبال می‌شود.

  • delayed

    این پارامتر می‌تواند در حین اجرا تغییر یابد، اما بلافاصله اعمال نخواهد شد.

  • restart

    پیش از اعمال این پارامتر، فرایند worker باید متوقف و مجدداً راه‌اندازی شود.

  • reload

    برای اعمال این پارامتر، برنامه‌های VCL باید مجدداً بارگذاری (reload) شوند.

  • wizard

    به آن دست نزنید مگر اینکه واقعاً بدانید چه کار می‌کنید.

  • only_root

    تنها در صورتی کار می‌کند که vinyld با دسترسی ریشه (root) در حال اجرا باشد.

توجه داشته باشید که در سیستم‌های ۳۲ بیتی، به‌منظور صرفه‌جویی در فضای حافظهٔ مجازی (VM)، برخی مقادیر پیش‌فرض یا بیشینه نسبت به مقادیر فهرست‌شده در زیر کاهش یافته‌اند:

  • workspace_client: 24k
  • workspace_backend: 20k
  • http_resp_size: 8k
  • http_req_size: 12k
  • gzip_buffer: 4k
  • vsl_buffer: 4k
  • vsl_space: 1G (بیشینه)
  • thread_pool_stack: 64k

    این متن از همان متنی تولید شده است که در صورت استفاده از دستور param.show در CLI مشاهده خواهید کرد:

نکته: این پارامتر به قابلیتی وابسته است که در همهٔ پلتفرم‌ها در دسترس نیست.

  • واحد: bool
  • پیش‌فرض: on (اگر پلتفرم شما از accept filterها پشتیبانی کند)

فعال‌سازی accept-filterهای هسته. در صورت فعال بودن، ممکن است برای اعمال اثر نیاز به بارگذاری یک ماژول هسته باشد.

فعال کردن accept_filter ممکن است در وهلهٔ اول از رسیدن برخی درخواست‌ها به Vinyl Cache جلوگیری کند. درخواست‌های بدریخت (malformed) ممکن است شناسایی‌نشده باقی بمانند و شمارندهٔ client_req_400 را افزایش ندهند. درخواست‌های GET یا HEAD دارای بدنه ممکن است به‌طور کامل مسدود شوند.

  • پیش‌فرض: 0.9
  • کمینه: 0
  • بیشینه: 1
  • پرچم‌ها: experimental

اگر با کمبود منابعی مانند توصیف‌کننده‌های فایل (file descriptors) یا worker threadها مواجه شویم، acceptor بین پذیرش‌ها به خواب می‌رود. این پارامتر مدت‌زمان خواب را به ازای هر پذیرش موفق (به‌طور ضربی) کاهش می‌دهد (یعنی: 0.9 = ۱۰٪ کاهش).

  • واحد: seconds
  • پیش‌فرض: 0.000
  • کمینه: 0.000
  • بیشینه: 1.000
  • پرچم‌ها: experimental

اگر با کمبود منابعی مانند توصیف‌کننده‌های فایل یا worker threadها مواجه شویم، acceptor بین پذیرش‌ها به خواب می‌رود. این پارامتر کنترل می‌کند که با هر بار شکست در پذیرش یک اتصال جدید، چه میزان به مدت‌زمان خواب اضافه شود.

  • واحد: seconds
  • پیش‌فرض: 0.050
  • کمینه: 0.000
  • بیشینه: 10.000
  • پرچم‌ها: experimental

اگر با کمبود منابعی مانند توصیف‌کننده‌های فایل یا worker threadها مواجه شویم، acceptor بین پذیرش‌ها به خواب می‌رود. این پارامتر حداکثر مدت‌زمانی را که می‌تواند بین تلاش‌ها برای پذیرش اتصالات جدید بخوابد، محدود می‌کند..SS auto_restart

  • واحد: bool
  • پیش‌فرض: on

راه‌اندازی مجدد خودکار فرایند فرزند/کارگر (child/worker) در صورت از کار افتادن آن.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 1.000

مدت‌زمان انتظار (تایم‌اوت) پیش از بستن اتصالات بدون استفادهٔ backend.

  • واحد: ثانیه
  • پیش‌فرض: 10.000
  • حداقل: 0.000
  • پرچم‌ها: experimental

هنگام برقراری اتصال به backendها، برخی کدهای خطا (EADDRNOTAVAIL, EACCESS, EPERM) نشان‌دهندهٔ کمبود منابع محلی یا مشکل در پیکربندی هستند که تلاش مجدد برای برقراری اتصال ممکن است به دلیل پیچیدگی عملیات‌های مربوطه در هسته (kernel)، شرایط را بدتر کند. این پارامتر از تلاش‌های مکرر برای برقراری اتصال به مدت‌زمان تعیین‌شده جلوگیری می‌کند.

  • واحد: ثانیه
  • پیش‌فرض: 0.250
  • حداقل: 0.000
  • پرچم‌ها: experimental

هنگام برقراری اتصال به backendها، برخی کدهای خطا (ECONNREFUSED, ENETUNREACH) نشان‌دهندهٔ مشکلات اساسی در اتصال هستند، مانند نپذیرفتن اتصالات توسط backend یا مشکلات مسیریابی، که در چنین شرایطی تلاش‌های مکرر برای برقراری اتصال بی‌فایده تلقی می‌شود. این پارامتر از تلاش‌های مکرر برای برقراری اتصال به مدت‌زمان تعیین‌شده جلوگیری می‌کند.

  • پیش‌فرض: 0
  • حداقل: 0
  • پرچم‌ها: experimental

حداکثر تعداد تراکنش‌هایی که می‌توانند در صف انتظار برای در دسترس قرار گرفتن یک اتصال backend قرار گیرند. این مقدار پیش‌فرض 0 (صفر) به این معنی است که هیچ صفی برای تراکنش‌ها تشکیل نمی‌شود. VCL می‌تواند این مقدار پیش‌فرض را برای هر backend بازنویسی (override) کند.

توجه داشته باشید که از این قابلیت باید با احتیاط استفاده شود، چرا که می‌تواند موجب انباشته شدن ریسه‌ها (threads) و افزایش زمان پاسخ‌دهی شود..SS backend_wait_timeout

  • واحد: ثانیه
  • پیش‌فرض: 0.000
  • حداقل: 0.000
  • پرچم‌ها: timeout, experimental

هنگامی که یک backend هیچ اتصال آزادی برای یک تراکنش ندارد، تراکنش می‌تواند در صف قرار گیرد (به backend_wait_limit مراجعه کنید) تا منتظر اتصال بماند. این مدت‌زمان پیش‌فرضی است که تراکنش پیش از انصراف منتظر خواهد ماند. VCL می‌تواند این مقدار پیش‌فرض را برای هر backend بازنویسی کند.

اکیداً توصیه می‌شود که این مقدار هرگز بیش از چند ثانیه تنظیم نشود.

  • واحد: بررسی‌ها
  • پیش‌فرض: 0
  • حداقل: 0

حداکثر تعداد گونه‌های (variants) احتمالاً ناسازگار که در حین جستجو (lookup) در برابر فهرست ban ارزیابی می‌شوند. تنظیم این مقدار روی 0 به این معنی است که تنها گونه‌های منطبق در برابر فهرست ban کنونی ارزیابی خواهند شد.

  • واحد: banها
  • پیش‌فرض: 0
  • حداقل: 0
  • پرچم‌ها: experimental

محتوای دنباله طولانی (long tail) را از حافظه پنهان پاکسازی می‌کند تا تعداد banها زیر این مقدار باقی بماند. مقدار 0 آن را غیرفعال می‌کند.

هنگامی که این پارامتر روی مقداری غیر از صفر تنظیم شود، ban lurker طبق معمول به بررسی فهرست ban از بالا به پایین ادامه می‌دهد، اما هنگامی که به ban شماره ban_cutoff برسد، با تمام اشیاء طوری رفتار می‌کند که گویی با یک ban منطبق شده‌اند و آن‌ها را از حافظه پنهان پاکسازی می‌کند. از آنجا که اشیاء فعالانه استفاده‌شده در زمان درخواست در برابر فهرست ban آزمایش می‌شوند و بنابراین احتمالاً با banهای نزدیک به بالای فهرست مرتبط هستند، با ban_cutoff، اشیائی که کمتر مورد دسترسی قرار گرفته‌اند ("long tail") حذف می‌شوند.

این پارامتر یک شبکه ایمنی برای جلوگیری از زمان‌های پاسخ‌دهی نامطلوب ناشی از آزمایش banها در زمان جستجو (lookup) است. تنظیم یک cutoff، زمان پاسخ‌دهی بهتر را با کارایی حافظه پنهان مبادله می‌کند. مقدار توصیه‌شده متناسب با rate(bans_lurker_tests_tested) / n_objects در حین کارکرد ban lurker است که بیانگر تعداد banهایی است که سیستم توان تحمل آن را دارد. تاخیر اضافی ناشی از آزمایش ban در زمان درخواست، از مرتبه ban_cutoff / rate(bans_lurker_tests_tested) است. به عنوان مثال، برای rate(bans_lurker_tests_tested) = 2M/s و تاخیر قابل تحمل 100 میلی‌ثانیه، یک مقدار مناسب برای ban_cutoff ممکن است 200K باشد.

  • واحد: bool
  • پیش‌فرض: on

هنگام اضافه شدن یک ban جدید، banهای مشابه قدیمی‌تر را حذف می‌کند. این کار با عدم مقایسه اشیاء با banهای یکسان، در چرخه‌های CPU صرفه‌جویی می‌کند. اگر تعداد زیادی ban دارید که هرگز یکسان نیستند، این کار اتلاف وقت خواهد بود.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 0.000

فرآیند ban lurker، تا زمانی که banها به این سن نرسند آن‌ها را نادیده خواهد گرفت. هنگامی که یک ban اضافه می‌شود، ترافیک فعال به عنوان بخشی از جستجوی شیء در برابر آن آزمایش می‌شود. از آنجا که بسیاری از برنامه‌ها banها را به صورت انفجاری صادر می‌کنند، این پارامتر ban-lurker را تا پایان یافتن هجوم اولیه متوقف نگه می‌دارد. این مقدار باید روی زمان تقریبی طول کشیدن یک انفجار ban تنظیم شود..SS ban_lurker_batch

  • پیش‌فرض: 1000
  • حداقل: 1

فرایند ban lurker پس از بررسی این تعداد شیء، به مدت ${ban_lurker_sleep} به خواب می‌رود. اگر ban-lurker منابع زیادی مصرف می‌کند، از این گزینه برای تنظیم آهنگ آن استفاده کنید.

  • واحد: ثانیه
  • پیش‌فرض: 0.010
  • حداقل: 0.000
  • پرچم‌ها: experimental

مدت زمانی که ban lurker هنگام کناره‌گیری به نفع جستجو (lookup) به دلیل تداخل قفل‌ها (lock contention)، به خواب می‌رود.

  • واحد: ثانیه
  • پیش‌فرض: 0.010
  • حداقل: 0.000

مدت زمانی که ban lurker پس از بررسی ${ban_lurker_batch} شیء به خواب می‌رود. اگر ban-lurker منابع زیادی مصرف می‌کند، از این مقدار برای تنظیم آهنگ آن استفاده کنید. مقدار صفر فرایند ban lurker را به‌طور کامل غیرفعال می‌کند.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 0.000
  • پرچم‌ها: timeout

پیش از انصراف از واکشی (fetch)، تنها به این میزان ثانیه بین بایت‌های دریافتی از backend منتظر می‌مانیم. مقادیر VCL به‌ازای هر backend یا به‌ازای هر درخواست backend اولویت دارند. این پارامتر برای درخواست‌های pipe'شده اعمال نمی‌شود.

توجه: مقدار پیش‌فرض واقعی این پارامتر به محیط ساخت و گزینه‌های کامپایل Vinyl Cache بستگی دارد.

  • پیش‌فرض: exec $CC $CFLAGS %w -shared -o %o %s
  • پرچم‌ها: must_reload

دستوری که برای کامپایل کد منبع C به یک شیء قابل بارگذاری توسط dlopen(3) استفاده می‌شود. بسط‌های زیر قابل استفاده هستند:

  • %s: نام فایل منبع
  • %o: نام فایل خروجی
  • %w: پارامتر cc_warnings
  • %d: مقدار پیش‌فرض خام cc_command
  • %D: مقدار پیش‌فرض بسط‌یافته cc_command
  • %n: دایرکتوری کاری (گزینه -n)
  • %%: علامت درصد

توالی‌های بسط درصد ناشناخته نادیده گرفته می‌شوند، و برای جلوگیری از ناسازگاری‌های آتی، نویسه‌های درصد باید با یک توالی درصد دوگانه گریز (escape) داده شوند.

بسط‌های %d و %D امکان ارسال مقدار پیش‌فرض پارامتر به یک اسکریپت پوششی (wrapper) جهت انجام پردازش‌های اضافی را فراهم می‌کنند..SS cc_warnings

توجه: مقدار پیش‌فرض واقعی این پارامتر به محیط ساخت و گزینه‌های Vinyl Cache بستگی دارد.

  • پیش‌فرض: -Wall -Werror
  • پرچم‌ها: must_reload

هشدارهایی که هنگام کامپایل کد منبع C با پارامتر cc_command استفاده می‌شوند. به‌طور پیش‌فرض، VCL با همان مجموعه هشدارهایی کامپایل می‌شود که خود Vinyl Cache با آن‌ها کامپایل شده است.

  • واحد: بایت
  • پیش‌فرض: 64k
  • کمینه: 128b
  • بیشینه: 99999999b

بیشینه اندازه پاسخ CLI. اگر پاسخ از این حد فراتر رود، کد وضعیت پاسخ به‌جای 200 برابر با 201 خواهد بود و خط آخر نشان‌دهنده کوتاه شدن (truncation) پاسخ خواهد بود.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • کمینه: 0.000
  • پرچم‌ها: timeout

مهلت زمانی برای پاسخ‌های فرآیند فرزند به درخواست‌های CLI.

  • واحد: ثانیه
  • پیش‌فرض: 10
  • کمینه: 0

میزان اختلاف ساعت (clock skew) قابل‌پذیرش میان backend و ساعت محلی سیستم.

  • واحد: ثانیه
  • پیش‌فرض: 1.000
  • کمینه: 0.000

میزان پرش یا تغییر ناگهانی ساعت (clock step) مشاهده‌شده‌ای که پیش از بروز وحشت سیستم (panic)، مایل به پذیرش آن هستیم.

  • واحد: ثانیه
  • پیش‌فرض: 3.500
  • کمینه: 0.000
  • پرچم‌ها: timeout

مهلت زمانی پیش‌فرض اتصال برای ارتباط‌های backend. تلاش برای اتصال به backend پیش از صرف‌نظر کردن، تنها به اندازه این مقدار ثانیه صورت می‌پذیرد. VCL می‌تواند این مقدار پیش‌فرض را برای هر backend و هر درخواست backend بازنویسی (override) کند..SS critbit_cooloff

  • واحد: ثانیه
  • پیش‌فرض: 180.000
  • کمینه: 60.000
  • بیشینه: 254.000
  • پرچم‌ها: wizard

مدت زمانی که درهم‌ساز critbit ساختارهای objhead حذف‌شده را در فهرست cooloff نگه می‌دارد.

•
پیش‌فرض: none

فعال/غیرفعال کردن انواع مختلف اشکال‌زدایی.

غیرفعال کردن تمامی اشکال‌زدایی‌ها

از پیشوند +/- برای تنظیم/بازنشانی بیت‌های تکی استفاده کنید:

موتور وضعیت درخواست VSL
عملیات فضای کاری VSL
رویدادهای Waitinglist در VSL
همگام‌سازی VSL
حالت‌های مرزی در Hash
آزادسازی سریع VCL
رویدادهای Ban lurker در VSL
خرد کردن دریافت ESI به تکه‌ها
تخلیه بافر پس از سرآیند http1
حالت Vinyltest
ثبت رکوردهای قفل WITNESS
نگه‌داشتن فایل VSM هنگام راه‌اندازی مجدد
کُند کردن پذیرنده اتصالات (Acceptor)
غیرفعال کردن بررسی‌های گوناگون H2
نگه‌داشتن کتابخانه‌های رونوشت‌شده VMOD
پردازنده‌های Fetch/Deliver
اشکال‌زدایی پروتکل
نگه‌داشتن فایل‌های C و so مربوط به VCL
آمار تکمیلی قفل‌ها (lock)
  • واحد: ثانیه
  • پیش‌فرض: 10s
  • کمینه: 0.000
  • پرچم‌ها: obj_sticky

دوره ارفاق (grace) پیش‌فرض. یک شیء تا این مدت پس از منقضی شدن تحویل داده می‌شود، به شرطی که ریسه (thread) دیگری در حال تلاش برای دریافت یک نسخه جدید باشد.

  • واحد: ثانیه
  • پیش‌فرض: 0s
  • کمینه: 0.000
  • پرچم‌ها: obj_sticky

دوره نگهداری (keep) پیش‌فرض. یک شیء بدون‌استفاده تا این مدت نگهداری خواهد شد تا برای واکشی‌های شرطی backend در دسترس باشد. این بدان معناست که شیء در پایان ttl+grace+keep از حافظه پنهان (cache) حذف خواهد شد.

  • واحد: ثانیه
  • پیش‌فرض: 2m
  • کمینه: 0.000
  • پرچم‌ها: obj_sticky

مقدار TTL اختصاص‌یافته به اشیاء در صورتی که نه backend و نه کد VCL مقداری برای آن تعیین نکرده باشند.

•
پیش‌فرض: none

فعال/غیرفعال‌سازی ویژگی‌های آزمایشی.

غیرفعال‌سازی تمام ویژگی‌های آزمایشی

برای تنظیم/بازنشانی بیت‌های مجزا از پیشوند +/- استفاده کنید:

رهاسازی thread poolها
•
پیش‌فرض: none,+https_scheme,+validate_headers,+vcl_req_reset

فعال یا غیرفعال کردن قابلیت‌های جزئی گوناگون.

تنظیم مقدار پیش‌فرض (منسوخ شده: از param.reset استفاده کنید)
غیرفعال کردن تمام قابلیت‌ها.

از پیشوند +/- برای فعال یا غیرفعال کردن هر قابلیت به‌طور جداگانه استفاده کنید:

فعال‌سازی پشتیبانی از پروتکل HTTP/2.
پیام panic کوتاه.
بدون coredump. باید پیش از آغاز فرایند فرزند تنظیم شود.
استخراج میزبان از URI کامل در خط درخواست HTTP/1، در صورتی که طرح‌واره (scheme) برابر https باشد.
مدارا با سرایندهای برچسب زمانی ناسازگار با استاندارد مانند Date، Last-Modified، Expires و غیره.
تبدیل <esi:include src"https://... به http://...
اجازه دادن به پردازش ESI روی بدنه‌های غیر XML در ESI
نادیده گرفتن خطاهای نحو XML در بدنه‌های ESI.
نادیده گرفتن UTF-8 BOM در بدنه‌های ESI.
تجزیه ویژگی onerror در برچسب‌های <esi:include>.
انتظار برای بارگذاری کامل سیلوهای ماندگار (persistent silos) پیش از پاسخ‌گویی به درخواست‌ها.
اعتبارسنجی تمام عملیات تنظیم سرایند جهت انطباق با RFC9110 بخش 5.5.
ملزم کردن کارگرهای مشغول (busy workers) به پیروی از thread_stats_rate.
فعال‌سازی ردگیری (tracing) در VCL به‌طور پیش‌فرض (فعال‌سازی (be)req.trace). برای ردگیری vcl_init / vcl_fini الزامی است.
توقف پردازش VCL کلاینت به محض قطع ارتباط کلاینت. هنگامی که این رخ می‌دهد، مقدار MAIN.req_reset افزایش می‌یابد.

  • واحدها: bytes
  • پیش‌فرض: 16k
  • حداقل: 4k
  • پرچم‌ها: experimental

اندازه پیش‌فرض تکه‌ها (chunksize) که توسط fetcher استفاده می‌شود. این مقدار باید از اندازه اکثر اشیاء با TTL کوتاه بزرگ‌تر باشد. محدودیت‌های درونی در پیمانه storage_file افزایش این مقدار به فراتر از 128kb را به ایده‌ای تردیدبرانگیز تبدیل می‌کند..SS fetch_maxchunksize

  • واحد: بایت
  • پیش‌فرض: 0.25G
  • حداقل: 64k
  • پرچم‌ها: experimental

حداکثر اندازه تکه‌ای (chunksize) که تلاش می‌شود از فضای ذخیره‌سازی تخصیص یابد. بیش از حد بزرگ بودن این مقدار ممکن است موجب ایجاد تأخیر و پراکندگی (fragmentation) در فضای ذخیره‌سازی شود.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 0.000
  • پرچم‌ها: timeout

مهلت زمانی (timeout) پیش‌فرض برای دریافت نخستین بایت از backend. پیش از انصراف، تنها به مدت این تعداد ثانیه برای دریافت اولین بایت صبر می‌شود. دستورهای VCL می‌توانند این مقدار پیش‌فرض را برای هر backend و هر درخواست backend بازنویسی کنند. این پارامتر بر روی درخواست‌های pipe‌شده اعمال نمی‌شود.

  • واحد: بایت
  • پیش‌فرض: 32k
  • حداقل: 2k
  • پرچم‌ها: experimental

اندازه بافر malloc استفاده‌شده برای پردازش gzip. اندازه بافر استفاده‌شده برای پردازش gzip. این بافرها برای داده‌های در حال انتقال (in-transit) استفاده می‌شوند؛ به عنوان نمونه داده‌های gunzip‌شده‌ای که به سمت کلاینت ارسال می‌شوند. کوچک بودن بیش از حد این فضا منجر به سربار بیشتر، نوشتن‌های مکرر روی سوکت‌ها و غیره می‌شود؛ بیش از حد بزرگ بودن آن نیز احتمالاً تنها اتلاف حافظه خواهد بود. بافرهای Gzip از فضای ذخیره‌سازی Transient تخصیص می‌یابند.

  • پیش‌فرض: 6
  • حداقل: 0
  • حداکثر: 9

سطح فشرده‌سازی Gzip: مقدار 0=اشکال‌زدایی (debug)، مقدار 1=سریع (fast)، مقدار 9=بهترین (best)

  • پیش‌فرض: 8
  • حداقل: 1
  • حداکثر: 9

سطح حافظه Gzip: مقدار 1=کند/کمترین فشرده‌سازی، 9=سریع/بیشترین فشرده‌سازی. میزان تأثیر بر حافظه به‌صورت 1=1k، 2=2k، ... 9=256k است..SS h2_header_table_size

  • واحد: بایت
  • پیش‌فرض: 4k
  • حداقل: 0b

اندازهٔ جدول هدر HTTP2. این اندازه‌ای است که برای جدول رمزگشایی پویای HPACK استفاده خواهد شد.

مقدار این پارامتر، SETTINGS_HEADER_TABLE_SIZE را در فریم اولیهٔ SETTINGS که هنگام برقراری یک نشست HTTP2 جدید به کلاینت فرستاده می‌شود، تعیین می‌کند.

  • واحد: بایت
  • پیش‌فرض: 65535b
  • حداقل: 65535b
  • حداکثر: 2147483647b

اندازهٔ اولیهٔ پنجرهٔ کنترل جریان HTTP2.

مقدار این پارامتر، SETTINGS_INITIAL_WINDOW_SIZE را در فریم اولیهٔ SETTINGS که هنگام برقراری یک نشست HTTP2 جدید به کلاینت فرستاده می‌شود، تعیین می‌کند.

  • واحد: استریم (stream)
  • پیش‌فرض: 100
  • حداقل: 0

حداکثر تعداد جریان‌های (streams) هم‌روند HTTP2. این مقدار بیانگر تعداد درخواست‌هایی است که می‌توانند به‌طور هم‌زمان برای یک اتصال HTTP2 واحد فعال باشند.

مقدار این پارامتر، SETTINGS_MAX_CONCURRENT_STREAMS را در فریم اولیهٔ SETTINGS که هنگام برقراری یک نشست HTTP2 جدید به کلاینت فرستاده می‌شود، تعیین می‌کند.

  • واحد: بایت
  • پیش‌فرض: 16k
  • حداقل: 16k
  • حداکثر: 16777215b

حداکثر اندازهٔ بار مفید (payload) در هر فریم HTTP2 که مایل به پذیرش آن هستیم.

مقدار این پارامتر، SETTINGS_MAX_FRAME_SIZE را در فریم اولیهٔ SETTINGS که هنگام برقراری یک نشست HTTP2 جدید به کلاینت فرستاده می‌شود، تعیین می‌کند.

  • واحد: بایت
  • پیش‌فرض: 0b
  • حداقل: 0b
  • حداکثر: 2147483647b

حداکثر اندازهٔ یک فهرست هدر فشرده‌نشده در HTTP2. این پارامتر به SETTINGS_MAX_HEADER_LIST_SIZE در فریم اولیهٔ SETTINGS نگاشت نمی‌شود، بلکه به‌جای آن پارامتر http_req_size نگاشت می‌شود.

پارامتر http_req_size کلاینت‌های HTTP2 را از حداکثر اندازه برای فهرست هدر مطلع می‌سازد. فراتر رفتن از http_req_size به‌منظور حفظ اتصال منجر به بازنشانی جریان (reset stream) پس از پردازش بلوک HPACK می‌شود، اما فراتر رفتن از h2_max_header_list_size منجر به قطع فوری اتصال HTTP2 خواهد شد.

اگر h2_max_header_list_size کمتر از http_req_size باشد، هیچ تأثیری نخواهد داشت؛ به‌جز مقدار ویژهٔ صفر که به‌صورت ۱۵۰٪ از http_req_size تفسیر می‌شود..SS h2_rapid_reset

  • واحد: ثانیه
  • پیش‌فرض: 1.000
  • کمینه: 0.000
  • پرچم‌ها: delayed, experimental

آستانه بالایی برای اینکه یک فریم RST_STREAM در http/2 چقدر سریع پس از یک فریم HEADERS تجزیه شود تا مشکوک در نظر گرفته شده و مشمول محدودیت‌های نرخ تعیین‌شده توسط h2_rapid_reset_limit و h2_rapid_reset_period گردد. تغییرات این پارامتر بر پیش‌فرض نشست‌های جدید HTTP2 اعمال می‌شود. می‌توان از vmod_h2(3) برای تنظیم آن از طریق VCL استفاده کرد.

  • پیش‌فرض: 100
  • کمینه: 0
  • پرچم‌ها: delayed, experimental

حد مجاز RST در HTTP2. حداکثر تعداد مجاز ریست‌های جریان صادرشده توسط کلاینت در طول یک بازه زمانی را پیش از بسته‌شدن اتصال مشخص می‌کند. تنظیم این پارامتر بر روی 0 محدودیت را غیرفعال می‌کند. تغییرات این پارامتر بر پیش‌فرض نشست‌های جدید HTTP2 اعمال می‌شود. می‌توان از vmod_h2(3) برای تنظیم آن از طریق VCL استفاده کرد.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • کمینه: 1.000
  • پرچم‌ها: delayed, experimental, wizard

مدت زمان پنجره لغزان HTTP2 برای h2_rapid_reset_limit. تغییرات این پارامتر بر پیش‌فرض نشست‌های جدید HTTP2 اعمال می‌شود. می‌توان از vmod_h2(3) برای تنظیم آن از طریق VCL استفاده کرد.

  • واحد: بایت
  • پیش‌فرض: 1M
  • کمینه: 1M
  • بیشینه: 1G
  • پرچم‌ها: wizard

افزایش‌های پنجره دریافت HTTP2. میزان اعتباری که در فریم‌های WINDOW_UPDATE ارسال می‌کنیم چقدر بزرگ باشد. تنها بر بدنه درخواست‌های ورودی تأثیر می‌گذارد (مانند: POST، PUT و غیره).

  • واحد: بایت
  • پیش‌فرض: 10M
  • کمینه: 65535b
  • بیشینه: 1G
  • پرچم‌ها: wizard

حد پایین پنجره دریافت HTTP2. تلاش می‌شود پنجره دست‌کم به این اندازه بزرگ نگه داشته شود. تنها بر بدنه درخواست‌های ورودی تأثیر می‌گذارد (مانند: POST، PUT و غیره)..SS h2_rxbuf_storage

  • پیش‌فرض: Transient
  • پرچم‌ها: must_restart

نام backend ذخیره‌سازی که بافرهای دریافت HTTP/2 باید از آن تخصیص یابند.

  • واحد: ثانیه
  • پیش‌فرض: 5.000
  • کمینه: 0.000
  • پرچم‌ها: timeout, wizard

محدودیت زمانی HTTP2 بدون اعتبارات پنجره (window credits). مدت زمانی که یک جریان (stream) می‌تواند منتظر کلاینت بماند تا به پنجره اعتبار دهد و اجازه ارسال فریم‌های DATA بیشتری داده شود.

  • واحد: struct iovec (=16 بایت)
  • پیش‌فرض: 64
  • کمینه: 5
  • بیشینه: 1024
  • پرچم‌ها: wizard

تعداد بردار io (io vector) جهت تخصیص برای مخابره پروتکل HTTP1. یک هدر HTTP1 به ۷ + ۲ عدد به ازای هر فیلد هدر HTTP نیاز دارد. از workspace_thread تخصیص داده می‌شود. این پارامتر فقط بر بردار‌های io استفاده‌شده برای تحویل به کلاینت اثر می‌گذارد. برای واکشی‌های بک‌اند (backend fetches)، بیشترین تعداد بردار io (تا سقف IOV_MAX) از حافظه در دسترس workspace_thread تخصیص می‌یابد.

  • واحد: bool
  • پیش‌فرض: on
فعال‌سازی پشتیبانی از gzip. در صورت فعال بودن، Vinyl Cache اشیاء فشرده را از بک‌اند درخواست کرده و آن‌ها را فشرده ذخیره می‌کند. اگر یک کلاینت از کدگذاری gzip پشتیبانی نکند، Vinyl Cache در صورت تقاضا اشیاء فشرده را از فشرده‌سازی خارج می‌کند. Vinyl Cache همچنین هدر Accept-Encoding کلاینت‌هایی که پشتیبانی از gzip را اعلام می‌کنند به صورت زیر بازنویسی می‌کند:
Accept-Encoding: gzip

کلاینت‌هایی که از gzip پشتیبانی نمی‌کنند، هدر Accept-Encoding آن‌ها حذف خواهد شد. برای کسب اطلاعات بیشتر درباره نحوه پیاده‌سازی gzip، لطفاً فصل مربوط به gzip در راهنمای مرجع Vinyl Cache را ببینید.

هنگامی که پشتیبانی از gzip غیرفعال است، متغیرهای beresp.do_gzip و beresp.do_gunzip هیچ اثری در VCL ندارند.

  • واحد: خط‌های هدر
  • پیش‌فرض: 64
  • کمینه: 32
  • بیشینه: 65535

بیشترین تعداد خطوط هدر HTTP که در {req|resp|bereq|beresp}.http مجاز می‌دانیم (اندازه obj.http به طور خودکار به تعداد دقیق هدرها تنظیم می‌شود). از نظر حافظه workspace بسیار کم‌هزینه است (~۲۰ بایت). توجه داشته باشید که خط اول به اندازه پنج خط هدر فضا اشغال می‌کند..SS http_range_support

  • واحدها: bool
  • پیش‌فرض: on

فعال‌سازی پشتیبانی از هدرهای HTTP Range.

  • واحدها: bytes
  • پیش‌فرض: 8k
  • حداقل: 40b

حداکثر طول مجاز برای هر یک از هدرهای درخواست کلاینت HTTP. این محدودیت شامل خطوط ادامه‌دار آن نیز می‌شود.

  • واحدها: کد وضعیت HTTP یا 0 برای غیرفعال‌سازی
  • پیش‌فرض: 0
  • حداقل: 400
  • حداکثر: 500

کد وضعیت HTTP که در صورت فراتر رفتن از http_req_size بازگردانده می‌شود. مقدار پیش‌فرض 0 اتصال را بدون ارسال هیچ پاسخ HTTP و به‌صورت خاموش می‌بندد. توجه داشته باشید که هیچ کد وضعیت استاندارد HTTP وجود ندارد که دقیقاً با پیاده‌سازی http_req_size مطابقت داشته باشد. کد 414 فقط برای URL اعمال می‌شود، در حالی که 413 برای بدنهٔ درخواست اعمال می‌گردد. کد 400 احتمالاً کم‌اشتباه‌ترین مقدار جایگزین در مقایسه با عدم ارسال هیچ پاسخی (0) است. همچنین می‌تواند به دلیل محدودیت‌های پیکربندی‌شده به‌عنوان یک خطای داخلی از سمت Vinyl Cache در نظر گرفته شود، بنابراین 500 نیز مجاز است.

  • واحدها: bytes
  • پیش‌فرض: 32k
  • حداقل: 0.25k

حداکثر تعداد بایت‌های درخواست کلاینت HTTP که پردازش خواهد شد. این محدودیت شامل تمام بایت‌ها تا خط خالی دوگانه‌ای است که به درخواست HTTP پایان می‌دهد. حافظه برای درخواست از فضای کاری کلاینت (پارامتر: workspace_client) تخصیص می‌یابد و این پارامتر مشخص می‌کند که درخواست مجاز است چه مقدار از آن را اشغال کند.

برای کلاینت‌های HTTP2، این مقدار به‌صورت MAX_HEADER_LIST_SIZE در فریم اولیهٔ SETTINGS اعلان می‌شود.

  • واحدها: bytes
  • پیش‌فرض: 8k
  • حداقل: 40b

حداکثر طول مجاز برای هر یک از هدرهای پاسخ backend HTTP. این محدودیت شامل خطوط ادامه‌دار آن نیز می‌شود.

  • واحدها: bytes
  • پیش‌فرض: 32k
  • حداقل: 0.25k

حداکثر تعداد بایت‌های پاسخ backend HTTP که پردازش خواهد شد. این محدودیت شامل تمام بایت‌ها تا خط خالی دوگانه‌ای است که به پاسخ HTTP پایان می‌دهد. حافظه برای پاسخ از فضای کاری backend (پارامتر: workspace_backend) تخصیص می‌یابد و این پارامتر مشخص می‌کند که پاسخ مجاز است چه مقدار از آن را اشغال کند..SS idle_send_timeout

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 0.000
  • حداکثر: 3600.000
  • پرچم‌ها: timeout, delayed

مهلت زمانی ارسال برای تکه‌های مجزای داده در اتصالات کلاینت. در صورت اعمال 'send_timeout' ممکن است افزایش یابد.

هنگامی که این مهلت زمانی به سر رسد، نشست بسته می‌شود.

برای اطلاعات بیشتر، به صفحهٔ راهنمای setsockopt(2) یا socket(7) ذیل SO_SNDTIMEO مراجعه کنید.

  • واحد: اتصالات
  • پیش‌فرض: 1024
  • حداقل: 0
  • پرچم‌ها: must_restart

عمق صف شنود (listen).

  • واحد: ثانیه
  • پیش‌فرض: 2.000
  • حداقل: 0.000
  • پرچم‌ها: experimental

مهلت زمانی پیش از جابه‌جایی شیء در فهرست LRU. اشیاء تنها در صورتی به ابتدای فهرست LRU منتقل می‌شوند که در طول این بازهٔ زمانی از قبل به آنجا منتقل نشده باشند. این کار تعداد عملیات‌های قفل‌گذاری لازم برای دسترسی به فهرست LRU را کاهش می‌دهد.

  • واحد: سطوح
  • پیش‌فرض: 5
  • حداقل: 0

حداکثر عمق پردازش esi:include.

  • واحد: راه‌اندازی مجدد
  • پیش‌فرض: 4
  • حداقل: 0
  • پرچم‌ها: delayed

حد بالای تعداد دفعاتی که یک درخواست می‌تواند مجدداً راه‌اندازی شود..SS max_retries

  • واحد: دفعات تلاش
  • پیش‌فرض: 4
  • کمینه: 0
  • پرچم‌ها: delayed

حداکثر تعداد دفعاتی که یک واکشی backend می‌تواند مجدداً تلاش کند.

  • پیش‌فرض: 100
  • کمینه: 0

آستانه برنامه‌های بارگذاری‌شده VCL. (برچسب‌های VCL شمارش نمی‌شوند.) پارامتر max_vcl_handling رفتار را مشخص می‌کند.

  • پیش‌فرض: 1
  • کمینه: 0
  • بیشینه: 2

رفتار هنگام تلاش برای فراتر رفتن از حد مجاز VCLهای بارگذاری‌شده در max_vcl.

  • 0 - نادیده گرفتن پارامتر max_vcl.
  • 1 - صدور هشدار.
  • 2 - رد بارگذاری VCLها.

  • واحد: تخصیص‌ها
  • پیش‌فرض: 50
  • کمینه: 0
  • پرچم‌ها: experimental

حداکثر تعداد اشیایی که برای باز کردن فضا جهت بدنه یک شیء، برای حذف (nuke) آن‌ها تلاش می‌شود.

  • واحد: بایت
  • پیش‌فرض: 64k
  • کمینه: 4k
  • بیشینه: 10M
  • پرچم‌ها: must_restart

اندازه بافر پیام‌های panic. بافر panic در دایرکتوری کاری به‌عنوان حافظه مشترک بین فرایندهای management و worker تخصیص داده می‌شود، بنابراین در صورت تغییر این مقدار، باید فضای کافی در دایرکتوری کاری در نظر گرفته شود. پیام‌های panic به اندازه پیکربندی‌شده کوتاه (truncate) می‌شوند..SS pcre2_depth_limit

  • پیش‌فرض: 20
  • کمینه: 1

سقف عمق بازگشت برای منطق تطبیق داخلی در یک pcre2_match().

(ببینید: pcre2_set_depth_limit() در مستندات pcre2.)

این گزینه یک حد بالایی برای مقدار پشتهٔ (stack) استفاده‌شده توسط PCRE2 برای دسته‌های خاصی از عبارت‌های منظم تعیین می‌کند.

ما مقدار پیش‌فرض را برای جلوگیری از فروپاشی برنامه (crash)، به قیمت خطاهای احتمالی در تطبیق عبارت‌های منظم، پایین تنظیم کرده‌ایم.

شکست‌های تطبیق در گزارش‌ها به عنوان پیام‌های VCL_Error ثبت خواهند شد.

  • واحد: bool
  • پیش‌فرض: on

استفاده از کامپایلر JIT برای pcre2 در صورت در دسترس بودن.

  • پیش‌فرض: 10000
  • کمینه: 1

محدودیت تعداد فراخوانی‌ها برای منطق تطبیق داخلی در pcre2_match().

(ببینید: pcre2_set_match_limit() در مستندات pcre2.)

این پارامتر میزان زمان پردازنده‌ای (CPU) را که تطبیق عبارت منظم می‌تواند مصرف کند، محدود می‌سازد.

  • واحد: ثانیه
  • پیش‌فرض: 3
  • کمینه: 0
  • پرچم‌ها: must_restart

بازهٔ زمانی بین پینگ‌ها از والد (parent) به فرزند (child). مقدار صفر پینگ‌زدن را به طور کامل غیرفعال می‌کند که امکان متصل کردن یک اشکال‌زدا (debugger) به فرزند را فراهم می‌سازد.

  • واحد: اتصالات
  • پیش‌فرض: 0
  • کمینه: 0

حداکثر تعداد نشست‌های اختصاص‌یافته به تراکنش‌های pipe..SS pipe_task_deadline

  • واحد: ثانیه
  • پیش‌فرض: 0.000
  • حداقل: 0.000
  • پرچم‌ها: timeout

ضرب‌الاجل برای نشست‌های PIPE. صرف‌نظر از وجود هرگونه فعالیت در هر یک از دو جهت، پس از این تعداد ثانیه نشست بسته می‌شود.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 0.000
  • پرچم‌ها: timeout

مهلت بیکاری برای نشست‌های PIPE. اگر به مدت این تعداد ثانیه هیچ داده‌ای در هیچ‌یک از دو جهت دریافت نشود، نشست بسته می‌شود.

•
پیش‌فرض: 10,100,10

پارامترها برای استخر حافظه درخواست به ازای هر worker pool.

این سه عدد عبارتند از:

حداقل اندازه استخر آزاد.
حداکثر اندازه استخر آزاد.
حداکثر طول عمر عنصر آزاد.

•
پیش‌فرض: 10,100,10

پارامترها برای استخر حافظه نشست به ازای هر worker pool.

این سه عدد عبارتند از:

حداقل اندازه استخر آزاد.
حداکثر اندازه استخر آزاد.
حداکثر طول عمر عنصر آزاد.
•
پیش‌فرض: 10,100,10

پارامترهای مربوط به استخر حافظهٔ واکشی شیء بک‌اند (backend object fetch).

این سه عدد عبارتند از:

حداقل اندازهٔ استخر آزاد.
حداکثر اندازهٔ استخر آزاد.
حداکثر عمر عنصر آزاد.

  • واحد: bool
  • پیش‌فرض: off

ترجیح دادن نشانی IPv6 هنگام اتصال به بک‌اندهایی که هم نشانی IPv4 و هم IPv6 دارند.

  • واحد: درخواست به ازای هر درخواست
  • پیش‌فرض: 3
  • حداقل: 1
  • پرچم‌ها: experimental

تعداد درخواست‌های پارک‌شده‌ای که به ازای هر درخواست تکمیل‌شده روی شیء آغاز می‌کنیم. نکته: حتی با وجود تأخیر ضمنی در تحویل، این پارامتر افزایش نمایی تعداد ریسه‌های کارگر (worker threads) را کنترل می‌کند. مقدار 1 در عوض ازسرگیری درخواست‌ها را متوالی (ترتیبی) می‌کند و تنها برای مقاصد آزمایشی مفید است.

  • واحد: ثانیه
  • پیش‌فرض: 600.000
  • حداقل: 0.000
  • پرچم‌ها: timeout, delayed

کل مهلت زمانی (timeout) برای پاسخ‌های معمولی HTTP1. این مقدار برای برخی خطاهای تولیدشده به‌صورت داخلی و حالت pipe اعمال نمی‌شود.

هنگامی که حین ارسال یک پاسخ HTTP1 به 'idle_send_timeout' برخورد شود، مهلت زمانی تمدید می‌شود مگر اینکه کل زمان صرف‌شده برای ارسال کامل پاسخ از این مقدار ثانیه بیشتر شده باشد.

هنگامی که این مهلت زمانی به پایان برسد، نشست بسته می‌شود..SS shortlived

  • واحد: ثانیه
  • پیش‌فرض: 10.000
  • کمینه: 0.000

اشیایی که با (ttl+grace+keep) کوتاه‌تر از این مقدار ایجاد شوند، همواره در فضای ذخیره‌سازی گذرا (transient storage) قرار می‌گیرند.

  • واحد: bool
  • پیش‌فرض: on
  • پرچم‌ها: must_restart

نصب یک گردانندهٔ سیگنال که هنگام بروز خطاهای تقسیم‌بندی (segmentation fault)، خطاهای گذرگاه (bus error) و سیگنال‌های abort، تلاش می‌کند اطلاعات اشکال‌زدایی را تخلیه کند.

  • واحد: ثانیه
  • پیش‌فرض: 0.000
  • کمینه: 0.000
  • پرچم‌ها: timeout

مهلت زمانی جایگزین برای راه‌اندازی اولیهٔ فرایند کارگر (worker process). اگر cli_timeout طولانی‌تر از startup_timeout باشد، به جای آن استفاده می‌شود.

  • واحد: bool
  • پیش‌فرض: on

ثبت تمام ترافیک CLI در syslog(LOG_INFO).

توجه: این پارامتر به قابلیتی وابسته است که در همهٔ بسترها در دسترس نیست.

  • واحد: bool
  • پیش‌فرض: off
  • پرچم‌ها: must_restart

فعال‌سازی افزونهٔ TCP Fast Open.

توجه: این پارامتر به قابلیتی وابسته است که در همهٔ بسترها در دسترس نیست.

  • واحد: ثانیه
  • پیش‌فرض: وابسته به بستر
  • کمینه: 1.000
  • بیشینه: 100.000
  • پرچم‌ها: experimental

تعداد ثانیه‌های بین کاوش‌های TCP keep-alive. این مقدار برای سوکت‌های دامنه یونیکس (Unix domain sockets) نادیده گرفته می‌شود..SS tcp_keepalive_probes

نکته: این پارامتر به قابلیتی وابسته است که در همهٔ پلتفرم‌ها در دسترس نیست.

  • واحد: کاوش
  • پیش‌فرض: وابسته به پلتفرم
  • کمینه: 1
  • بیشینه: 100
  • پرچم‌ها: experimental

بیشترین تعداد کاوش‌های TCP keep-alive برای ارسال، پیش از قطع امید و بستن اتصال در صورتی که هیچ پاسخی از طرف مقابل دریافت نشود. برای سوکت‌های دامنه یونیکس نادیده گرفته می‌شود.

نکته: این پارامتر به قابلیتی وابسته است که در همهٔ پلتفرم‌ها در دسترس نیست.

  • واحد: ثانیه
  • پیش‌فرض: وابسته به پلتفرم
  • کمینه: 1.000
  • بیشینه: 7200.000
  • پرچم‌ها: experimental

تعداد ثانیه‌هایی که یک اتصال باید در وضعیت بیکار (idle) باشد پیش از آن‌که TCP شروع به ارسال کاوش‌های keep-alive کند. برای سوکت‌های دامنه یونیکس نادیده گرفته می‌شود.

  • واحد: ثانیه
  • پیش‌فرض: 0.000
  • کمینه: 0.000
  • پرچم‌ها: experimental

حداقل به این میزان پس از ایجاد یک نخ (thread) درنگ کنید.

برخی سیستم‌های (دارای باگ) ممکن است به تأخیری کوتاه (کسری از ثانیه) بین ایجاد نخ‌ها نیاز داشته باشند. اگر مشاهده کردید که شمارندهٔ 'threads_failed' بیش از حد رشد می‌کند، این مقدار را روی چند میلی‌ثانیه تنظیم کنید.

تنظیم بیش از اندازهٔ این مقدار منجر به ناکافی بودن نخ‌های کارگر (worker threads) می‌شود.

  • واحد: ثانیه
  • پیش‌فرض: 1.000
  • کمینه: 0.010
  • پرچم‌ها: delayed, experimental

به این میزان پس از نابودی یک نخ (thread) درنگ کنید.

این پارامتر کاهش تدریجی استخرهای نخ (thread pools) را در هنگام بیکاری (یا شرایط شبه‌بیکاری) کنترل می‌کند..SS thread_pool_fail_delay

  • واحد: ثانیه
  • پیش‌فرض: 0.200
  • حداقل: 0.010
  • پرچم‌ها: experimental

پس از هر بار شکست در ایجاد thread، پیش از تلاش برای ایجاد یک thread دیگر، حداقل به این میزان صبر کنید.

شکست در ایجاد یک thread کارگر (worker thread) اغلب نشانه‌ای از رو به پایان بودن کار است، چرا که منابع فرآیند در حال اتمام است. این تاخیر تلاش می‌کند تا بی‌جهت رسیدن به پایان کار را تسریع نکند.

اگر شکست در ایجاد threadها به یک مشکل تبدیل شده است، بررسی کنید که مقدار thread_pool_max بیش از حد بالا نباشد.

همچنین افزایش مقادیر thread_pool_timeout و thread_pool_min ممکن است به کاهش نرخ نابودی threadها و ایجاد مجدد آن‌ها کمک کند.

  • واحد: threadها
  • پیش‌فرض: 5000
  • حداقل: thread_pool_min
  • پرچم‌ها: delayed

حداکثر تعداد threadهای کارگر در هر استخر (pool).

این مقدار را بالاتر از حد نیاز تنظیم نکنید، زیرا threadهای کارگر اضافی حافظهٔ RAM و CPU را بی‌جهت مصرف می‌کنند و عموماً تنها مانع انجام کارآمد امور می‌شوند.

  • واحد: threadها
  • پیش‌فرض: 100
  • حداقل: 5
  • حداکثر: thread_pool_max
  • پرچم‌ها: delayed

حداقل تعداد threadهای کارگر در هر استخر.

افزایش این مقدار ممکن است به پاسخ‌دهی سریع‌تر هنگام گذر از شرایط بار کاری پایین یا در مواردی که مهلت threadها منقضی شده است، کمک کند.

حداقل مقدار از نظر فنی ۵ thread است، اما اکیداً توصیه می‌شود که این پارامتر حداقل روی ۱۰ تنظیم شود.

  • واحد: threadها
  • پیش‌فرض: 0 (auto-tune: ۵٪ از thread_pool_min)
  • حداکثر: ۹۵٪ از thread_pool_min
  • پرچم‌ها: delayed

تعداد threadهای کارگر رزرو شده برای وظایف حیاتی در هر استخر.

وظایف ممکن است برای تکمیل شدن به وظایف دیگری نیاز داشته باشند (برای مثال، درخواست‌های client ممکن است به درخواست‌های backend نیاز داشته باشند؛ نشست‌های http2 نیازمند streamها هستند که آن‌ها نیز به درخواست‌ها وابسته می‌باشند). این سهمیهٔ رزرو به این منظور است که اطمینان حاصل شود وظایف با اولویت پایین‌تر حتی تحت بار زیاد نیز مانع از اجرای وظایف با اولویت بالاتر نمی‌شوند.

مقدار مؤثر، صرف‌نظر از مقدار این پارامتر، حداقل ۵ (تعداد کلاس‌های اولویت داخلی) است..SS thread_pool_stack

  • واحد: بایت
  • پیش‌فرض: 80k
  • کمینه: sysconf(_SC_THREAD_STACK_MIN)
  • پرچم‌ها: delayed

اندازه پشته ریسه کارگر. این مقدار احتمالاً توسط هسته به مضربی از 4k (یا هر مقداری که page_size باشد) به بالا گرد می‌شود.

اندازه پشته مورد نیاز در درجه اول تحت تأثیر عمق call-tree است. متداول‌ترین عوامل تعیین‌کننده مرتبط در کد هسته Vinyl Cache عبارتند از فشرده‌سازی/خروج از فشرده‌سازی GZIP، پردازش ESI و تطابق عبارات باقاعده (regular expression). همچنین VMODها ممکن است به مقادیر قابل توجهی پشته اضافی نیاز داشته باشند. عمق تودرتویی زیرروال‌های VCL عامل دیگری است، اگرچه معمولاً غالب نیست.

اندازه پشته به ازای هر ریسه است، بنابراین حداکثر کل حافظه مورد نیاز برای پشته‌های ریسه کارگر در مرتبه size = thread_pools x thread_pool_max x thread_pool_stack خواهد بود.

بنابراین، به‌ویژه برای پیکربندی‌هایی با ریسه‌های بسیار، نگه داشتن اندازه پشته در کمترین مقدار به کاهش میزان حافظه مورد نیاز Vinyl Cache کمک می‌کند.

از سوی دیگر، thread_pool_stack تحت هر شرایطی باید به اندازه کافی بزرگ باشد، در غیر این صورت Vinyl Cache به دلیل سرریز پشته (stack overflow) از کار خواهد افتاد. معمولاً سرریز پشته به صورت خطای بخش‌بندی (segfault / SIGSEGV) ظاهر می‌شود که در آن نشانی خطا نزدیک به اشاره‌گر پشته (sp) است.

مگر اینکه مصرف پشته کاهش یابد، در هنگام رخ دادن سرریز پشته باید مقدار thread_pool_stack افزایش یابد. توصیه می‌شود افزایش آن در گام‌های 150%-200% صورت گیرد تا زمانی که وقوع سرریز پشته متوقف شود.

  • واحد: ثانیه
  • پیش‌فرض: 300.000
  • کمینه: 10.000
  • پرچم‌ها: delayed, experimental

آستانه بیکاری ریسه.

ریسه‌های مازاد بر thread_pool_min که حداقل به این مدت زمان بیکار بوده‌اند، از بین خواهند رفت.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • کمینه: 0.100
  • پرچم‌ها: experimental

ناظر (watchdog) گیر کردن صف ریسه‌ها.

اگر برای این مدت زمان هیچ کار در صف قرار گرفته‌ای آزاد نشود، فرایند کارگر خود را دچار panic می‌کند.

  • واحد: استخر
  • پیش‌فرض: 2
  • کمینه: 1
  • بیشینه: 32
  • پرچم‌ها: delayed, experimental

تعداد استخرهای ریسه کارگر.

افزایش تعداد استخرهای کارگر، رقابت بر سر قفل (lock contention) را کاهش می‌دهد. هر استخر کارگر همچنین دارای یک ریسه برای پذیرش اتصالات جدید است، بنابراین برای نرخ‌های بسیار بالای اتصالات جدید ورودی در سیستم‌هایی با هسته‌های پرشمار، ممکن است افزایش استخرهای کارگر ضروری باشد.

تعداد بیش از حد استخرها منابع CPU و RAM را هدر می‌دهد، و اختصاص بیش از یک استخر به ازای هر CPU به احتمال زیاد به کارایی آسیب می‌زند.

می‌توان آن را به‌صورت زنده (on the fly) افزایش داد، اما کاهش آن برای اعمال شدن نیازمند راه‌اندازی مجدد است، مگر اینکه پرچم اشکال‌زدایی آزمایشی drop_pools تنظیم شده باشد..SS thread_queue_limit

  • واحدها: درخواست‌ها
  • پیش‌فرض: 20
  • کمینه: 0
  • پرچم‌ها: آزمایشی

طول مجاز صف درخواست به ازای هر thread-pool.

این پارامتر تعداد درخواست‌هایی را تعیین می‌کند که در انتظار یک ریسهٔ آزاد در صف قرار می‌گیرند. فراتر از این محدودیت، نشست‌ها به جای قرار گرفتن در صف، دور انداخته (drop) می‌شوند.

  • واحدها: درخواست‌ها
  • پیش‌فرض: 10
  • کمینه: 0
  • پرچم‌ها: آزمایشی

ریسه‌های کارگر (worker threads) آمارها را جمع‌آوری می‌کنند و در صورتی که پس از اتمام یک وظیفه (درخواست/واکشی و غیره) قفل آزاد باشد، آن‌ها را در شمارنده‌های آمار سراسری تخلیه می‌نمایند. این پارامتر حداکثر تعداد وظایفی را تعیین می‌کند که یک ریسهٔ کارگر می‌تواند پیش از اجبار به تخلیهٔ آمارهای انباشته‌شده‌اش در شمارنده‌های سراسری، انجام دهد.

  • واحدها: ثانیه
  • پیش‌فرض: 5.000
  • کمینه: 0.000
  • بیشینه: 3600.000

مهلت زمانی بی‌کاری (idle timeout) برای اتصالات کلاینت.

یک اتصال تا زمانی که تمام سرآیندهای درخواست دریافت نشود، بی‌کار تلقی می‌شود.

این پارامتر به‌ویژه برای اتصالات keepalive پروتکل HTTP1 کاربرد دارد که در صورت عدم دریافت درخواست بعدی پیش از به پایان رسیدن این مهلت زمانی، بسته می‌شوند.

  • واحدها: ثانیه
  • پیش‌فرض: 0.050
  • کمینه: 0.000
  • پرچم‌ها: آزمایشی

مدت زمانی که ریسهٔ کارگر روی یک نشست بی‌کار درنگ می‌کند، پیش از آنکه آن را به waiter تحویل دهد. هنگامی که نشست‌ها مجدداً استفاده می‌شوند، تا نیمی از کل موارد استفادهٔ مجدد در طول ۱۰۰ میلی‌ثانیه نخست پس از تکمیل درخواست قبلی رخ می‌دهند. تنظیم بیش از حد بالای این پارامتر باعث می‌شود ریسه‌های کارگر بدون انجام کاری بیهوده معطل بمانند، و تنظیم بسیار پایین آن تنها به این معناست که نشست‌های بیشتری از مسیر غیرمستقیم waiter عبور می‌کنند.

  • واحدها: بایت
  • پیش‌فرض: 0b
  • کمینه: 0b

تعداد بایت‌هایی که Vinyl Cache برای واکشی‌های جریانیِ غیرقابل‌کَش از backend بافر می‌کند - به عبارت دیگر، Vinyl Cache چند بایت جلوتر از آنچه به کلاینت فرستاده شده را از backend می‌خواند. مقدار صفر به معنی عدم وجود محدودیت است و شیء تا حد امکان با بیشترین سرعت واکشی می‌شود.

در هنگام مواجهه با کلاینت‌های کُند، تنظیم این پارامتر روی مقداری غیر از صفر می‌تواند از ذخیرهٔ کامل اشیاء بزرگ غیرقابل‌کَش جلوگیری کند؛ به‌ویژه در شرایطی که هدف تنها پخش جریانی (stream) آن‌ها به کلاینت است. در نتیجه، تراکنش یک کلاینت کُند، اتصال backend را تا پایان تحویل باز نگه می‌دارد.

این پارامتر مقدار پیش‌فرض متغیر VCL با نام beresp.transit_buffer است که می‌تواند برای کنترل بافر عبوری (transit buffer) به ازای هر درخواست به backend استفاده شود..SS uncacheable_ttl

  • واحد: ثانیه
  • پیش‌فرض: 2m
  • کمینه: 0.000
  • پرچم‌ها: obj_sticky

مقدار TTL تخصیص‌یافته به اشیاء غیرقابل‌کَش توسط VCL توکار.

  • واحد: گونه‌ها
  • پیش‌فرض: 10
  • کمینه: 1

تعداد گونه‌هایی که باید ارزیابی شوند تا یک اعلان (Notice) مبنی بر احتمال وجود بیش از حد گونه‌ها ثبت شود.

نام مستعار منسوخ‌شده برای پارامتر vcc_feature.

نام مستعار منسوخ‌شده برای پارامتر vcc_feature.

•
پیش‌فرض: none,+err_unref,+unsafe_path

فعال یا غیرفعال کردن رفتارهای گوناگون VCC.

تنظیم مقدار پیش‌فرض (منسوخ‌شده: از param.reset استفاده کنید)
غیرفعال کردن تمام رفتارها.

برای فعال یا غیرفعال کردن رفتارهای مجزا از پیشوند +/- استفاده کنید:

اشیاء ارجاع‌داده‌نشده در VCL منجر به خطا می‌شوند.
مجاز دانستن کد C درون‌خطی در VCL.
مجاز دانستن '/' در مسیرهای include و vmod. مجاز دانستن 'import ... from ...'.

نام مستعار منسوخ‌شده برای پارامتر vcc_feature..SS vcl_cooldown

  • واحد: ثانیه
  • پیش‌فرض: 600.000
  • کمینه: 1.000

مدت‌زمانی که یک VCL پس از جایگزین شدن به عنوان VCL فعال، گرم نگه داشته می‌شود (تفکیک‌پذیری زمانی تقریباً ۳۰ ثانیه).

نکته: مقدار پیش‌فرض واقعی این پارامتر به محیط و گزینه‌های ساخت Vinyl Cache بستگی دارد.

•
پیش‌فرض: ${sysconfdir}/vinyl-cache:${datadir}/vinyl-cache/vcl

دایرکتوری (یا فهرستی از دایرکتوری‌ها که با دونقطه از هم جدا شده‌اند) که نام‌های نسبی فایل‌های VCL (دستورهای vcl.load و include) در آن‌ها جستجو می‌شوند. به‌طور پیش‌فرض، Vinyl Cache فایل‌های VCL را هم در دایرکتوری پیکربندی سیستم و هم در دایرکتوری داده‌های اشتراکی جستجو می‌کند تا بسته‌ها بتوانند فایل‌های VCL خود را در مکانی استاندارد قرار دهند که includeهای نسبی در آن کار کنند. مواردی که با +glob فراخوانی (include) می‌شوند را نمی‌توان در vcl_path جستجو کرد.

نکته: مقدار پیش‌فرض واقعی این پارامتر به محیط و گزینه‌های ساخت Vinyl Cache بستگی دارد.

•
پیش‌فرض: ${libdir}/vinyl-cache/vmods

دایرکتوری (یا فهرستی از دایرکتوری‌ها که با دونقطه از هم جدا شده‌اند) که VMODها در آن قرار دارند.

  • واحد: بایت
  • پیش‌فرض: 16k
  • کمینه: vsl_reclen + 12 بایت

تعداد بایت‌های فضای کاری (req-/backend-) اختصاص‌یافته برای بافر کردن رکوردهای VSL. هنگامی که این پارامتر تنظیم می‌شود، به احتمال زیاد workspace_client و workspace_backend نیز باید به همان میزان تنظیم شوند.

تنظیم این مقدار روی عددی بیش از حد بالا موجب مصرف زیاد حافظه می‌شود؛ تنظیم بیش از حد پایین آن باعث تخلیه (flush) مکرر VSL و احتمالاً افزایش رقابت بر سر قفل (lock-contention) در mutex مربوط به VSL خواهد شد.

•
پیش‌فرض: all,-Debug,-ObjProtocol,-ObjStatus,-ObjReason,-ObjHeader,-ExpKill,-WorkThread,-Hash,-VfpAcct,-H2RxHdr,-H2RxBody,-H2TxHdr,-H2TxBody,-VdpAcct,-ReqTarget

ماسک کردن پیام‌های منفرد VSL برای جلوگیری از ثبت آن‌ها در گزارش‌ها.

فعال‌سازی همه برچسب‌ها
تنظیم مقدار پیش‌فرض (منسوخ شده: از param.reset استفاده کنید)

برای لغو ماسک یا ماسک کردن پیام‌های منفرد VSL، از پیشوند +/- پیش از نام برچسب VSL استفاده کنید. برای مقادیر مجاز vsl(7) را ببینید..SS vsl_reclen

  • واحد: بایت
  • پیش‌فرض: 255b
  • حداقل: 16b
  • حداکثر: vsl_buffer - 12 بایت

حداکثر تعداد بایت‌ها در یک رکورد لاگ SHM.

  • واحد: بایت
  • پیش‌فرض: 80M
  • حداقل: 1M
  • حداکثر: 4G
  • پرچم‌ها: must_restart

میزان فضای تخصیص‌یافته برای بافرِ fifo مربوط به VSL در قطعه حافظهٔ VSM. اگر این مقدار را بیش از حد کوچک تعیین کنید، vinyl{ncsa|log} و غیره قادر به همگام ماندن نخواهند بود. بزرگ در نظر گرفتن بیش از حد آن نیز صرفاً منابع حافظه را هدر می‌دهد.

  • واحد: ثانیه
  • پیش‌فرض: 60.000
  • حداقل: 10.000
  • حداکثر: 600.000

مدت زمانی که حافظهٔ VSM پس از آزادسازی، گرم (آماده استفاده) نگه داشته می‌شود (دقت تفکیک تقریباً ۲ ثانیه).

  • واحد: بایت
  • پیش‌فرض: 96k
  • حداقل: 1k
  • پرچم‌ها: delayed

میزان فضای کاری پروتکل HTTP به بایت برای req/resp در backend HTTP. اگر بزرگ‌تر از 4k است، برای بهره‌وری حافظه مجازی (VM) از مضربی از 4k استفاده کنید.

  • واحد: بایت
  • پیش‌فرض: 96k
  • حداقل: 9k
  • پرچم‌ها: delayed

میزان فضای کاری پروتکل HTTP به بایت برای req/resp کلاینت‌های HTTP. برای بهره‌وری حافظه مجازی (VM)، از مضربی از 4k استفاده کنید. برای سازگاری با HTTP/2، این مقدار باید حداقل 20k باشد تا بتوان فریم‌هایی با اندازه کامل (=16k) را از کلاینت دریافت کرد. این امر معمولاً تنها در بدنهٔ درخواست‌های POST/PUT رخ می‌دهد. برای سایر الگوهای ترافیکی (traffic-patterns)، مقادیر کوچک‌تر کاملاً مناسب خواهند بود..SS workspace_session

  • واحد: بایت
  • پیش‌فرض: 0.75k
  • حداقل: 384b
  • پرچم‌ها: delayed

اندازه تخصیص برای ساختار نشست (session) و فضای کاری. فضای کاری عمدتاً برای نشانی‌های اتصال TCP به کار می‌رود. در صورتی که بزرگ‌تر از 4k باشد، برای کارایی بهتر حافظه مجازی (VM)، از مضربی از 4k استفاده کنید.

  • واحد: بایت
  • پیش‌فرض: 2k
  • حداقل: 0.25k
  • حداکثر: 8k
  • پرچم‌ها: delayed

میزان بایت‌های فضای کاری کمکی به ازای هر رشته (thread). این فضای کاری در طول فعالیت یک رشته کاری (worker thread)، برای برخی ساختارهای داده‌ای موقت استفاده می‌شود. یکی از کاربردهای آن برای IO-vectorهای مورد استفاده در حین تحویل است. تنظیم این پارامتر روی مقداری بیش از حد کم ممکن است تعداد فراخوانی‌های سیستمی writev() را افزایش دهد، و تنظیم بیش از حد زیاد آن تنها فضا را هدر می‌دهد. مقدار ~0.1k + UIO_MAXIOV * sizeof(struct iovec) (معمولاً = ~16k برای ۶۴ بیتی) در هر شرایط شناخته‌شده‌ای (به استثنای کاربردهای نامتعارف vmod)، حداکثر مقدار معقول در نظر گرفته می‌شود.

Vinyl Cache و ابزارهای همراه آن، در بیشتر موارد، با یکی از کدهای زیر خارج می‌شوند:

  • 0 بدون خطا (OK)
  • 1 خطایی که ممکن است وابسته به سیستم و/یا گذرا باشد
  • 2 خطای جدی در پیکربندی / پارامتر - تلاش مجدد با همان پیکربندی / پارامترها به احتمال زیاد بی‌فایده است

فرایند اصلی (master) vinyld همچنین ممکن است کد خروج خود را با مقادیر زیر OR کند:

  • با 0x20 هنگامی که فرایند فرزند vinyld از بین رفت،
  • با 0x40 هنگامی که فرایند فرزند vinyld با یک سیگنال متوقف شد، و
  • با 0x80 هنگامی که تخلیه حافظه (core dump) رخ داد.

دیمن vinyld توسط Poul-Henning Kamp با همکاری Verdens Gang AS و Redpill-Linpro توسعه یافته است.

این صفحه راهنما توسط Dag-Erling Smørgrav با به‌روزرسانی‌هایی از سوی Stig Sandbeck Mathisen <<ssm@debian.org>>، Nils Goroll و دیگران نوشته شده است..SH "کپی‌رایت و تکثیر (COPYRIGHT)"

این سند تحت همان مجوز خود Vinyl Cache منتشر شده است. برای جزئیات به LICENCE مراجعه کنید.

•
Copyright (c) 2007-2015 Varnish Software AS