# ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'
# ps -eo pid,user,vsize,rss,cmd --sort -vsize | head -5
# ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'
2500 root D [md0_raid1] 2617 root D [kjournald] 20248 root D [pdflush] 21438 www-data D /usr/sbin/apache2 -k start 21512 www-data D /usr/sbin/apache2 -k start 21667 www-data D /usr/sbin/apache2 -k start 21677 www-data D /usr/sbin/apache2 -k start 21764 www-data D /usr/sbin/apache2 -k start 21851 www-data D /usr/sbin/apache2 -k start 22309 www-data D /usr/sbin/apache2 -k start 22539 www-data D /usr/sbin/apache2 -k start 22597 www-data D /usr/sbin/apache2 -k start ...
Hết RAM ---> nhảy qua swap ---> CPU lên cao ----> teo. Giải phảp: upgrade thêm RAM, càng nhiều càng tốt.Em cũng nghĩ nếu upgrade thêm ram sẽ giải quyết được vấn đề nhưng em muốn tìm hiểu xem những gì đang xảy ra trong hệ thống cũng như thử tune trước anh ạ. P/s: Cách đây lâu lắm rồi anh có trả lời em 1 lần cách xử lý khi cài linux xong không vào được windows nữa. :)]]>
conmale wrote:Em đã nhận định: "ứng dụng ruby với 3 processes đã chiếm hết ~500MB ram rồi, mỗi apache process ~20MB ram nữa nên nếu tính ra thì chỉ nên set MaxClients khoảng 50 thôi." cho nên đây là cốt lõi của vấn đề. Nếu cần tune, em phải compile lại apache và chỉ enable các apache modules cần thiết mà thôi. Làm việc này sẽ "save" được một ít memory nhưng cũng không nhiều lắm vì em chạy php nên phải dùng "prefork" mà prefork thì mỗi process được tạo ra ngốn một đống memory rất lớn.]]>
Hết RAM ---> nhảy qua swap ---> CPU lên cao ----> teo. Giải phảp: upgrade thêm RAM, càng nhiều càng tốt.Em cũng nghĩ nếu upgrade thêm ram sẽ giải quyết được vấn đề nhưng em muốn tìm hiểu xem những gì đang xảy ra trong hệ thống cũng như thử tune trước anh ạ. P/s: Cách đây lâu lắm rồi anh có trả lời em 1 lần cách xử lý khi cài linux xong không vào được windows nữa. :)
Dưới đây là kết quả của lệnh Code:Hôm nay, một con server chỗ mình cũng gặp tình trạng wait I/O khá cao (~ 60%), Ganglia đỏ lòm. `watch` thử thì thấy: kmirrord, kjournald, pdflush liên tục bị stucked ở D state. Google được vài cái links liên quan: http://www.westnet.com/~gsmith/content/linux-pdflush.htm http://www.evanjones.ca/linux-write-caching.html Default của các thông số này là: Code:
khi server đang ở tình trạng quá tải: Code:# ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'
Mỗi lần chạy có kết quả không giống nhau, nhưng đây là những processes có tần số xuất hiện cao nhất nên tớ note lại. Theo như kết quả googling thì 3 processes đầu tiên đều liên quan đến I/O, các processes có trạng thái D (uninterruptible sleep) còn lại đều là apache, như vậy có phải là do ổ cứng có vấn đề ko nhỉ?2500 root D [md0_raid1] 2617 root D [kjournald] 20248 root D [pdflush] 21438 www-data D /usr/sbin/apache2 -k start 21512 www-data D /usr/sbin/apache2 -k start 21667 www-data D /usr/sbin/apache2 -k start 21677 www-data D /usr/sbin/apache2 -k start 21764 www-data D /usr/sbin/apache2 -k start 21851 www-data D /usr/sbin/apache2 -k start 22309 www-data D /usr/sbin/apache2 -k start 22539 www-data D /usr/sbin/apache2 -k start 22597 www-data D /usr/sbin/apache2 -k start ...
vm.dirty_background_ratio = 10 vm.dirty_ratio = 40 vm.dirty_expire_centisecs = 2999 vm.dirty_writeback_centisecs = 499
vm.dirty_background_ratio = 5 vm.dirty_ratio = 20 vm.dirty_expire_centisecs = 1499 vm.dirty_writeback_centisecs = 29999