در این مقاله قصد داریم مرحله به مرحله روشهای موثر در توزیع سرعت بارگذاری یک وب سایت PHP+MYSQL را توضیح دهیم.
با افزایش تعداد بازدیدکنندگان یک وبسایت، فشار بر روی سرور نیز افزایش مییابد. این لود باعث افزایش بسیار بالای فشار بر روی سرور میشود؛ بهخصوص اگر منابع موجود کم بوده و CPU یا RAM کافی برای پاسخگویی به کلیه درخواستها وجود نداشته باشد.
بار زیاد سرور میتواند زمان لود صفحه را به میزان قابلتوجهی افزایش دهد؛ یا حتی یک وبسایت را کاملاً از دسترس خارج کند. بنابراین بسیار مهم است که بهصورت پیشگیرانه به این مسئله پرداخته و لود اضافی را قبل از تبدیل شدن به یک مشکل واقعی، پخش و توزیع کرد.
روشهای مختلفی برای کاهش لود سرور وجود دارد که به بودجه شما بستگی دارد. در این مقاله ما به اختصار دربارهی آنها صحبت خواهیم کرد و از ارزانترین گزینهها شروع میکنیم.
اگر نمیتوانید منابع بیشتری فراهم کنید، تنها گزینهی موجود این است که وبسایت خود را بهینه کنید تا سرور فعلی بهترین عملکرد را داشته باشد.
اطمینان حاصل کنید که فقط برنامههای کاربردی مورد نیاز درحال اجرا هستند؛ زیرا هر سرویس بلااستفاده فقط باعث مصرف CPU و حافظهی شما میشود. همین مسئله در مورد پلاگینها نیز صادق است؛ مانند پلاگینهای نصبشده در وردپرس.
بهینهسازی کدهای php کار دشواری است و احتمالاً به کمک یک برنامهنویس نیاز خواهید داشت. اما چند مورد نیز وجود دارد که میتوانید امتحان کنید. اگر وبسایت شما با ابزارهای caching مانند opcache ، memcache یا redis سازگار است؛ اطمینان حاصل کنید که این موارد در سرورتان فعال شدهاند، زیرا میتوانند تفاوت قابلملاحظهای ایجاد کنند.
هر ورژن جدید php سریعتر از ورژنهای قبلی است و از منابع کمتری استفاده میکند. ورژن php را بهصورت مرحلهبهمرحله بهروزرسانی کنید تا سایت شما بهدرستی لود شود. اگر از یک پلتفرم مدرن CMS مانند وردپرس استفاده میکنید، میتوانید مستقیماً آخرین ورژن PHP را بهروزرسانی کنید.
سرور پایگاه داده شما همچنین برای بهترین کارایی و استفاده از منابع باید از جدیدترین نسخه MySQL یا MariaDB استفاده کند. یک ابزار تشخیص دهنده مانند MySQLTuner میتواند برخی از ترفندهای مفید را برای فایلهای تنظیمات شما پیشنهاد دهد.
یک ابزار عالی دیگر mytop است که بهشما امکان میدهد که هنگام اجرای برنامه، Sql query ها را دنبال و بررسی کنید. کندیهایی که باعث لود زیاد سرور میشوند را شناسایی کرده و از برنامهنویس خود بخواهید که آنها را اصلاح کند.
در نهایت یک سیستم Caching مؤثر میتواند بار روی سرور شما را بسیار کاهش داده و به آن اجازه دهد همزمان به درخواستهای بیشتر پاسخ دهد.
حتی caching فایلهای استاتیک نیز بسیار مفید است؛ اما تا زمانی که تنظیمات درست باشد، میتوانید صفحات داینامیک را نیز در caching خود ذخیره کنید.
گزینههای caching زیادی در دسترس است. هر CMS چندین ابزار داخلی یا افزونه دارد. همچنین میتوانید Nginx را جهت ذخیرهسازی برای Apache نصب کنید؛ یا از راهحلهای دیگر مانند Redis یا Varnish برای این منظور استفاده کنید.
اگر بتوانید منابع بیشتری را اضافه کنید، قطعاً باعث توزیع سرعت بارگذاری خواهد شد. این کار در سرور اختصاصی کمی مشکلتر است. بدین منظور باید RAM بیشتری اضافه کنید؛ یا سرور خود را به ماشین مجازی بزرگتری منتقل کنید، که این کار به یک downtime نیاز دارد.
با این حال، ارتقاء بر روی یک VPS آسان است و هر سرویس ابری یا مجازی نیز از آن پشتیبانی میکند و صرفاً یک راهاندازی مجدد ساده سرور لازم است. سعی کنید تعداد Cpu Core ها یا میزان حافظه سیستم را افزایش دهید. در صورت وجود امکان بهروزرسانی، میتوانید دیسکهای خود را به راهحلهای ذخیرهسازی سریعتر مانند SSD منتقل کنید.
ارتقاء در یک سرور محدودیتهای خود را دارد، ولی توزیع بار یا ترافیک در چندین سرور در نهایت گزینهای مؤثرتر است. بسته به نیاز وبسایت خود، میتوانید منابع مورد نیاز سایت خود را بین چندین ماشین مجازی با role های خاص تقسیم کنید.
برنامههای لینوکس روی ماشینهای اختصاصی و هنگامی که منابع خود را با سایر سرویسها به اشتراک نمیگذارند، بهتر کار میکنند. سادهترین روش راهاندازی Multi server برای سایت php + MySQL آن است که از دو ماشین استفاده کنید. یکی از آنها فقط بهعنوان سرور پایگاه داده استفاده میشود و دیگری بهصورت ریموت فعالیت های وب سرور و php را مدیریت میکند.
اگر این تنظیمات نتواند ترافیک سایت را کنترل کند؛ زمان آن است که یک راهحل پیچیدهتر را پیاده کنید. دو یا چند وبسرور میتوانند لود را بین خود به اشتراک بگذارند. در این سناریو به ماشینی نیز احتیاج خواهید داشت که در میان آنها بهعنوان سرور توازن بار load balancer عمل کند.
سرور توازن بار load balancer را میتوان با Nginx یا HAProxy تنظیم کرد و نقش آن توزیع درخواستها به backend web server است که میتواند سریعتر پاسخ دهد. وبسرورها باید document root یکسان را به اشتراک بگذارند، که میتوان با تهیه خروجی از یک NFS mount یا ایجاد یک ماشین جداگانه برای این منظور بدان دست یافت.
این راهحل دارای مزایای بسیاری است: با افزودن یا حذف وبسرورها بهراحتی قابل ارتقاء است و همچنین پایداری سیستم را افزایش میدهد؛ زیرا حتی اگر یکی از وبسرورها نیز خراب شود، سایت کماکان آنلاین باقی میماند.
همچنین اگر بودجه قابل توجهی دارید، میتوانید یک راهحل کاملاً پایدار را با یک سرور پشتیبان توازن بار (با استفاده از VRRP) و دو ماشین دیتابیس و بهصورت master-master پیاده سازی کنید.
بهینهسازی لود سرور کار دشواری است و حتی برخی از بزرگترین وبسایتها نیز ممکن است در هنگام ترافیک شدید بهعنوان مثال در Black Friday با مشکل مواجه شوند.
تنظیم درست به منابع موجود و مشخصات وبسایت شما بستگی دارد. مراحل پایه شرح داده شده در این مقاله را دنبال کنید تا با رعایت توزیع سرعت بارگذاری ، یک جایگاه قابل اتکا برای خود ایجاد کنید.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.