PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : هنگ سرور با اجرای یک کوئری سنگین



s_dastjani
February 4th, 2014, 12:52
سلام خدمت دوستان
یه سرور اختصاصی دارم که وقتی یه کوئری نسبتا سنگین روش اجرا میشه کلا سرور میخوابه و لودش میره روی 100
راهی هست که نذاریم یک کوئری که بیش از 10 ثانیه طول کشید سریعا متوقف بشه؟
وب سرورم nginx و دایرکت ادمینه

compiler
February 6th, 2014, 15:23
منظور شما از کوئری دقیقا چیست؟! کوئری اگر قطع بشه وسط اجرا که خروجی هم نخواهد داشت و عملا عملکرد سایت مختل میشه!!!

به هر حال اگر منظورتون کوئری های پی در پی در دیتابیس های سنگین هست بله فشار میاره به سرور و مخصوصا هارد

قبل از هر چیز MySQL رو بهینه سازی کنید . mysqltuner میتونه کمک کنه

اگر هارد سرور ضعیفه یا هارد مجازیست باید حتما ارتقا پیدا کنه . هارد SSD بهترین گزینه برای میزبانی دیتابیس هست .

اگر حد اکثر زمان اجرای PHP مد نظرتونه و میخواید محدودش کنید از فایل php.ini مقدار max_execution_time رو به میزان دلخواه (بر اساس ثانیه) تغییر بدید

s_dastjani
February 6th, 2014, 19:51
تشکر از جوابتون
بعضی وقتها برای یکی از دیتابیس ها یه مشکلی پیش میاد
بعد هرچی کوئری برای اون تیبل که مشکل داره اجرا میشه هنگ میکنه
هارد ssd و سرور اختصاصیه
فقط میخوام وقتی یه کوئری مثلا 10 ثانیه طول کشید قطع بشه که فشار نیاره به سرور
مشکلی هم نیست خروجی نداشته باشه

OnlineServer
February 6th, 2014, 20:59
چرا امکان پذیر هست .میتونید از نرم افزار کوچک cpulimit استفاده کنید
برای نصب و استفاده مراحل زیر را دنبال کنید:
نصب :



wget http://downloads.sourceforge.net/cpulimit/cpulimit-1.1.tar.gz
tar -zxvf cpulimit-1.1.tar.gz
cd cpulimit-1.1
make


برای نحوه استفاده از نرم افزار میتونید به راهنما مراجعه کنید :



[root@localhost cpulimit-1.1]# ./cpulimit -h
Usage: cpulimit TARGET [OPTIONS...]
TARGET must be exactly one of these:
-p, --pid=N pid of the process
-e, --exe=FILE name of the executable program file
-P, --path=PATH absolute path name of the executable program file
OPTIONS
-l, --limit=N percentage of cpu allowed from 0 to 100 (mandatory)
-v, --verbose show control statistics
-z, --lazy exit if there is no suitable target process, or if it dies
-h, --help display this help and exit


مثال :
گذاشتن محدودیت استفاده از حداکثر ۴۰ درصد cpu برای mysqld



[root@localhost cpulimit-1.1]# ./cpulimit -e mysqld -l 40
Warning: no target process found. Waiting for it...
Process 9536 detected


نکته ۱ :اگر لیمیتتون خیلی زیاد باشه نرم افزارتون سریع هنگ میکنه
نکته ۲:‌ لیمیت ۱۰۰ فقز برای یک هسته cpu هست , اگر بیشتر از 1 هسته cpu دارید هرکدام را باید 100 در نظر یگیرید . برای مثال سروری که ۴ هسته cpu دارد نهایت توانش ۴۰۰ هست.
موفق باشید

s_dastjani
February 9th, 2014, 23:41
ممنون از جوابتون
این برای تمام یوزرها است؟
یعنی اگه دیتابیس یه یوزر مشکل پیدا کنه تمام یوزرها کند میشه دیتابیسشون؟
توی نت افراز وقتی یه هاست مشکل پیدا میکنه فقط همون یوزر مشکل دار میشه و کند میشه
البته اون litespeede و از من nginx

OnlineServer
February 9th, 2014, 23:54
خیر این کلی هست.
نت افراز از cloudlinux استفاده میکند