پاسخ : مشکل لود بالای apache
تعداد كانكشن ها رو چك كنيد .
پاسخ : مشکل لود بالای apache
چه جوری چک کنم ؟
[root@sever ~]# netstat -n | grep :80 |wc -l
270
الان سی پی یو رو 30% اومده
پاسخ : مشکل لود بالای apache
نقل قول:
نوشته اصلی توسط
DeltaGostar
مشکل شما با وقت و هزینه و کار بسیار بالا از فردا شب حل میکنم . با احتساب هزینه اگر مایل بودید . تا یک هفته تضمین میکنم مشکلی پیش آمد کانفیگ بررسی و مشکل از آپاچی باشد حل میکنم .
بخش درخواست و......نیست....بخش آموزشی هست....
پاسخ : مشکل لود بالای apache
همانطور که نمی دانیم دیتابیس بیشتر به cpu احتیاج دارد. مثلا یک سایت با 100 هزار بازدید می تواند روی یک سرور مجازی با 400 مگ رم کار کند اون هم 270 تا سی پنل و اکانت می گیرد اما ممکن است این سایت سی پی یو 2 هسته ای بگیرد یا 4 هسته ای
خب مشکل کجاست وقتی رکویست ها بالا میرود فشار روی سی پی یو پلکانی بالا میرود. یک لاگ بزاری ببینید
مثلا اگر در هر 6 ثانیه یک کاربر جدید به سایت می آید و مصرف سی پی یو روی 20% است و در بازه زمانی بعدی هر 3 ثانیه یک کاربر ممکن است سی پی یو تا 60% هم بالا بیاید
اگر از htop استفاده کنیم متوجه می شویم کی چقدر مصرف داشته معمولا بیشترین مصرف کننده در بالا قرار دارد
راه حل کاهش مصرف توسط دیتایس:
الف-فعال کردن slow query log در دیتابیس
ب- کچ کردن کوری های تکراری در رم (حد اقل 256 یا 512 مگ رم البته تنظیم دارد اجباری نیست مثلا شما روی 64 مگابایت اختصاص بدهید به کچ کردن)
ج-کوری هایی که مدام باید تعداد ویزیتور ها را group by یا disc int کند و زمان بر است را هر چند دقیقه یک بار اجرا کنید به این ترتیب مثلا یک کران جاب وظیفه دارد امار نفرات و کل صفحات امروز را هر 1 دقیقه اجرا کند. و خروجی را در یک جدول static بریزد
د-در جدول و یا دیتابیس که مخصوص دیتا و متن است فایل و داده binary blob نریزیم آن را جدا گانه آرشیو کنیم
مطمئن شویم هر جدول یک index key دارد
یک کران جاب بنویسیم که مثلا هر 6 ساعت جداول دیتابیس را optimize کند با این کار فضای خالی و over qout ها که جدول را کند می سازد از بین می رود.
در php5 به بعد یک دستور هست که لود بالانسینگ سرور را نشان می دهد. مثلا روی 2 من این طور عمل کردم. روی سایتم صفحاتی که اولویت ندارد را شناسایی کردم مثلا کوری های جدیدترین اخبار و کوری های اضافی که سایت را پر نشان دهد وقتی لود بالانسینگ روی 3 تا 6 هست آن را نشان نمی دهم
و وقتی لود بالانسینگ از 6 به بالاتر می رود یک پیغام به کاربر نمایش دهیم که مجددا تلاش کنید. این کار باعث می شود تا سرور به سمت دان شدن نرود. (مخصوص کسانی که سی پی یو یک هسته ای دارند و مشکل قطعی های زیاد هستند.)
---------- Post added at 11:42 PM ---------- Previous post was at 11:27 PM ----------
apache ro re build konid
پاسخ : مشکل لود بالای apache
مرسی ممنون از جواب شما.......ولی مشکل اینجاست که لود تمامی وی پی اس ها داره میره بالا
پاسخ : مشکل لود بالای apache
سلام
با استفاده از دستورات زیر کانکشن هاتون را بررسی کنید که یک ایپی چند تا کانکشن دارد:
netstat -atnp -A inet | grep ":80" | awk -F " " '{print $5} ' | awk -F ":" '{print $1}' | sort | uniq -c | sort -nr | head -10
10تا از بالاترین ها است این دستور
این دستور هم کل کانکشن هاتون به پورت 80 را نشان میدهد:
watch -n 0.1 'netstat -an | grep :80 | wc -l'
لاگ وبسرور را هم بررسی کنید، ببینید چه ایپی بیشترین درخواست را داده است:
awk '{print $1}' /usr/local/apache/logs/access_log | sort | uniq -c | sort -rnk1 | head -n 10
لاگ وبسرور هم مجددا مشاهده کنید، ببینید کدام صفحه و کدام سایت دارد بیشترین درخواست را میگیرد، سپس محدودیت کانکشن برای آن بگذارید.
از مد هایی مانند evasive هم استفاده کنید، کمک خواهند کرد