سلام خدمت دوستان
یه سرور اختصاصی دارم که وقتی یه کوئری نسبتا سنگین روش اجرا میشه کلا سرور میخوابه و لودش میره روی 100
راهی هست که نذاریم یک کوئری که بیش از 10 ثانیه طول کشید سریعا متوقف بشه؟
وب سرورم nginx و دایرکت ادمینه
نمایش نسخه قابل چاپ
سلام خدمت دوستان
یه سرور اختصاصی دارم که وقتی یه کوئری نسبتا سنگین روش اجرا میشه کلا سرور میخوابه و لودش میره روی 100
راهی هست که نذاریم یک کوئری که بیش از 10 ثانیه طول کشید سریعا متوقف بشه؟
وب سرورم nginx و دایرکت ادمینه
منظور شما از کوئری دقیقا چیست؟! کوئری اگر قطع بشه وسط اجرا که خروجی هم نخواهد داشت و عملا عملکرد سایت مختل میشه!!!
به هر حال اگر منظورتون کوئری های پی در پی در دیتابیس های سنگین هست بله فشار میاره به سرور و مخصوصا هارد
قبل از هر چیز MySQL رو بهینه سازی کنید . mysqltuner میتونه کمک کنه
اگر هارد سرور ضعیفه یا هارد مجازیست باید حتما ارتقا پیدا کنه . هارد SSD بهترین گزینه برای میزبانی دیتابیس هست .
اگر حد اکثر زمان اجرای PHP مد نظرتونه و میخواید محدودش کنید از فایل php.ini مقدار max_execution_time رو به میزان دلخواه (بر اساس ثانیه) تغییر بدید
تشکر از جوابتون
بعضی وقتها برای یکی از دیتابیس ها یه مشکلی پیش میاد
بعد هرچی کوئری برای اون تیبل که مشکل داره اجرا میشه هنگ میکنه
هارد ssd و سرور اختصاصیه
فقط میخوام وقتی یه کوئری مثلا 10 ثانیه طول کشید قطع بشه که فشار نیاره به سرور
مشکلی هم نیست خروجی نداشته باشه
چرا امکان پذیر هست .میتونید از نرم افزار کوچک cpulimit استفاده کنید
برای نصب و استفاده مراحل زیر را دنبال کنید:
نصب :
برای نحوه استفاده از نرم افزار میتونید به راهنما مراجعه کنید :کد:
wget http://downloads.sourceforge.net/cpu...mit-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 دارد نهایت توانش ۴۰۰ هست.
موفق باشید
ممنون از جوابتون
این برای تمام یوزرها است؟
یعنی اگه دیتابیس یه یوزر مشکل پیدا کنه تمام یوزرها کند میشه دیتابیسشون؟
توی نت افراز وقتی یه هاست مشکل پیدا میکنه فقط همون یوزر مشکل دار میشه و کند میشه
البته اون litespeede و از من nginx
خیر این کلی هست.
نت افراز از cloudlinux استفاده میکند