banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Xin giúp đỡ về tình trạng RAM và SWAP bị ngốn quá nhiều  XML
  [Question]   Xin giúp đỡ về tình trạng RAM và SWAP bị ngốn quá nhiều 26/03/2009 20:54:15 (+0700) | #1 | 174803
vnsp
Member

[Minus]    0    [Plus]
Joined: 26/03/2009 00:15:36
Messages: 3
Offline
[Profile] [PM]
Em có một server chạy cPanel.
CentOS5, Apache 2.0, PHP 5.2.6, MySQL 5.0.6.
Hôm rồi em tiến hành rebuild lại apache bằng lệnh /scripts/easyapache. Em build lại vì muốn bỏ một số module không cần thiết.
Sau khi rebuild lại, server chạy bình thường. Nhưng đến chiều ngày hôm đó, server báo lỗi 500 Internal Server Error.
Lúc đó chỉ các script HTML chạy được, PHP thì chịu, báo lỗi 500 hết.
Em tiến hành rebuild lại lần nữa, lần này em đổi cách thức xử lý của Apache thành MPM Worker (trước kia em chỉ chạy Prefork). Server chạy lại được. Nhưng em để ý thấy rằng, sau khi chuyển sang Worker, số idle worker rất nhiều. RAM và SWAP cũng bị dùng nhiều (SWAP partition). Trong khi đó CPU dùng thì rất thấp.
Đây là một vài thông tin khi em chạy top, free.

top - 07:45:33 up 3 days, 17:45, 1 user, load average: 0.20, 0.22, 0.20
Tasks: 242 total, 1 running, 241 sleeping, 0 stopped, 0 zombie
Cpu(s): 18.9%us, 4.8%sy, 0.0%ni, 72.4%id, 2.9%wa, 0.3%hi, 0.6%si, 0.0%st
Mem: 2072204k total, 1673944k used, 398260k free, 66288k buffers
Swap: 4192956k total, 2194572k used, 1998384k free, 833744k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12738 mysql 15 0 436m 94m 4500 S 9 4.7 31:39.32 mysqld
7275 user1 17 0 68244 41m 22m S 0 2.0 0:10.46 php5
7568 user2 16 0 68644 40m 17m S 0 2.0 0:00.69 php5
7144 user1 18 0 65692 39m 22m S 1 1.9 0:09.60 php5
7276 user1 15 0 64684 38m 22m S 14 1.9 0:09.41 php5
7908 user4 15 0 61248 30m 14m S 0 1.5 0:09.78 php5
8741 user17 16 0 63216 29m 14m S 0 1.5 0:00.98 php5
7151 user4 16 0 60224 29m 14m S 0 1.5 0:19.11 php5
7907 user4 15 0 60732 28m 12m S 0 1.4 0:11.66 php5
8959 user5 16 0 58776 28m 14m S 18 1.4 0:02.07 php5
7964 user6 16 0 59796 28m 13m S 0 1.4 0:00.89 php5
7143 user7 16 0 60464 26m 11m S 0 1.3 0:11.63 php5
7153 user8 16 0 58952 25m 11m S 0 1.3 0:10.20 php5
7998 user9 16 0 61380 24m 9524 S 0 1.2 0:00.40 php5
7566 user10 16 0 59872 24m 10m S 0 1.2 0:00.70 php5
8932 user5 16 0 59208 24m 10m S 0 1.2 0:01.20 php5
8040 user11 16 0 61400 24m 9212 S 0 1.2 0:00.32 php5
7282 user12 15 0 58556 23m 9920 S 0 1.1 0:00.44 php5
8002 user13 18 0 60188 21m 7508 S 0 1.1 0:00.26 php5
8000 user13 16 0 59524 21m 7588 S 0 1.1 0:00.36 php5
7244 user14 15 0 58680 20m 7640 S 0 1.0 0:01.27 php5
7609 user15 16 0 58228 20m 7552 S 0 1.0 0:00.48 php5
8709 user16 16 0 59444 20m 7260 S 0 1.0 0:00.26 php5
7145 user3 15 0 58684 20m 7276 S 0 1.0 0:02.89 php5
7483 user3 15 0 58684 20m 7232 S 0 1.0 0:02.40 php5
8069 user18 15 0 58540 20m 7252 S 0 1.0 0:00.26 php5
7273 user3 15 0 58688 20m 7196 S 1 1.0 0:02.22 php5
8593 user3 16 0 58676 20m 7156 S 0 1.0 0:00.56 php5
7902 muhl 15 0 59352 20m 7084 S 0 1.0 0:00.51 php5
8595 user3 15 0 58676 20m 7064 S 0 1.0 0:00.38 php5
7185 muhl 16 0 58424 20m 6968 S 1 1.0 0:00.75 php5
8004 user19 16 0 58856 20m 7280 S 1 1.0 0:00.51 php5
7279 user20 15 0 58272 19m 6936 S 0 1.0 0:00.26 php5
28207 root 15 0 29860 18m 1816 S 0 0.9 0:07.10 spamd
8346 root 17 0 159m 12m 1028 S 0 0.6 0:04.30 clamd
7210 root 15 0 18976 11m 1728 S 0 0.6 0:05.80 lfd 


root@vnlinux [/usr/local/cpanel]# free -m
...........total used free shared buffers cached
Mem: 2023 1918 104 0 66 901
-/+ buffers/cache: 951 1072
Swap: 4094 2143 1951 


Đây là thông số trong httpd.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 7
UseCanonicalName Off
AccessFileName .htaccess
DefaultType text/plain
HostnameLookups Off
ErrorLog logs/error_log
<IfModule worker.c>
StartServers 2
MaxClients 150
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

 


Điều này dường như khiến server chạy chậm lại, RAM bị tốn quá nhiều.
Các anh có thể giải thích cho em điều này đươc không ạ. Và làm thế nào để tối ưu Apache, MySQL (em nghĩ vấn đề này là do Apache, MySQL gây nên).
Em cảm ơn
[Up] [Print Copy]
  [Question]   Re: Xin giúp đỡ về tình trạng RAM và SWAP bị ngốn quá nhiều 26/03/2009 21:38:51 (+0700) | #2 | 174811
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Căn bản mà nói, không nên chạy php với apache worker mpm nếu muốn ổn định. Cho đến nay, php (cả version 5) vẫn chưa làm việc hoàn chỉnh với worker mpm.

Cả worker và prefork cho php đều dùng ram tương đương nhau, chẳng có cái nào hơn hẳn cái nào cả. Chỉ có một điểm khác biệt là khi dùng prefork, mỗi process được tạo ra để lo cho một request, khi hoàn tất, process này bị hủy. Trong khi đó, với worker thì mỗi process có nhiều "child", cho nên chúng tồn tại cho đến khi nào số request đạt đến giá trị MaxRequestPerChild đã ấn định. Bởi thế, dùng worker thì thấy các process hiển hiện lâu và nhiều là thế. Dùng worker thấy CPU thấp hơn là vì server không thường xuyên tạo ra các process mới (cho các request mới).
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: Xin giúp đỡ về tình trạng RAM và SWAP bị ngốn quá nhiều 26/03/2009 22:49:45 (+0700) | #3 | 174819
vnsp
Member

[Minus]    0    [Plus]
Joined: 26/03/2009 00:15:36
Messages: 3
Offline
[Profile] [PM]
Cảm ơn anh comale đã trả lời. Em xin hỏi thêm một chút.
Em đã tiến hành giảm số MaxRequestPerChild trong Worker để tạm khắc phục số idle worker. Tuy nhiên RAM và SWAP vẫn không giảm. Trước kia em chạy Prefork thì không thấy nó tốn đến thế. Ram có dùng tương đối 40-50% nhưng swap thì ít khi thấy dùng. Nếu có dùng chỉ vài %.
Vậy có cách nào để giảm việc sử dụng ram và swap quá nhiều như hiện nay không ạ?
Em xem httpd.conf có một dòng như sau:
RLimitMEM 415360682
RLimitCPU 240 


Nhìn thì em hiểu hình như nó giới hạn tài nguyên Ram và CPU, nhưng các thông số thì em không hiểu. Anh có thể giải thích cho em được không.
Anyway, tối nay em sẽ thử rebuild lại lần nữa với Prefork. Có lỗi gì mong anh giúp đỡ smilie.
[Up] [Print Copy]
  [Question]   Re: Xin giúp đỡ về tình trạng RAM và SWAP bị ngốn quá nhiều 27/03/2009 02:08:26 (+0700) | #4 | 174870
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Vì bạn chạy cPanel, shared host, chắc vì lý do an toàn nên php phải chạy dưới dạng cgi-bin (xem cái top của bạn rất nhiều process php5 với các user khác nhau).
Ở chế độ này, tất nhiên là tốn rất nhiều mem rồi. Dù bạn compile apache kiểu gì đi chăng nữa (hay dùng package đi kèm CentOs).

Tớ nghĩ bạn nên tập trung vào tunning php5, loại bỏ các extension ko cần thiết của nó, limit memory cho mỗi script đc phép dùng (mặc đinh của centos có 8M thôi)....

Đến đây chưa đủ thì bạn ... tăng RAM cho máy, hoặc chấp nhận rủi ro bằng cách chuyển qua chạy chế độ mod_php. Ở chế độ mod_php, apache sẽ tận dụng rất hiệu quả các child proccess để nạp và chạy script, nói chung là tốn ít mem hơn, nhưng vì mọi user đều chạy dưới quyền của apache nên nếu 1 thằng chủ shared host nào nó phá thì...
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|