iT邦幫忙

0

LAMP 環境網站效能測試問題

網站建置環境為 Linux + Apache + MySQL + PHP
小弟這邊負責 PHP 的開發
Server 是對方公司請一個 Windows 比較熟的工程師
安裝了 CentOS 以及建置網路環境
config 那些都用預設的
網站「有時候」會卡一下
現在不確定是哪個環節出了問題
只知道 CPU, RAM 那些都用不兇
不知道友沒有什麼方式可以查到哪個 PHP 頁面會導致 server pending
或者是 server pending 是那項 config 開不夠
只知道偶而會遇到 too many connections error
希望有經驗的朋友可以提供一些檢查的方式

2 個回答

14
wiseguy
iT邦超人 1 級 ‧ 2011-08-01 14:53:34
最佳解答

chan15提到:
too many connections error

問題既然是 too many connections error,那麼兩處最有可能會發生,就是 apache 與 mysql。

apache 的連線數,預設是 256,想要調高一點的話,就編輯
/etc/httpd/conf/httpd.conf
檔案中,找到底下這段,把 ServerLimit 與 MaxClients 都加大即可。
<IfModule prefork.c>
:
ServerLimit 256
MaxClients 256
不過還是要 monitor 一下,是不是使用的人真的很多,因為連線數一直被耗掉,也有可能是被 DoS 攻擊了。

mysql 的連線數,預設是 100,如果不足,就編輯
/etc/my.cnf
找到
max_connections = 100
這行,加大連線數。如果找不到就自行加在 [mysqld] 區段內。另外再找到
wait_timeout = ?????
把它相對調低,比如 3000,讓 mysql 把斷線的連線儘早回收再利用。

因為這兩個連線數調大,都是會佔記憶體的。所以不宜一次調很大,像是給它來個一萬兩萬的,那你的 server 會跑不動,記憶體全被耗光了。請慢慢往上加,比如 apache 一次加 256,mysql 一次加 50,調整並 restart 之後,用 top 觀察一陣子記憶體耗用情況。假如記憶體都耗光了還是不夠用,那就得加 RAM 了。

PS. 別 apache 與 mysql 兩個一起更動,請先調一個,再調另一個。

chan15 iT邦新手 5 級 ‧ 2011-08-01 18:33:19 檢舉

根據 Google Analytics,大約隨時都有 900 人連線

wiseguy iT邦超人 1 級 ‧ 2011-08-01 22:19:42 檢舉

那麼 apache 至少要 1.5 倍,1350 以上比較妥當。
MySQL 則需要大約 1.2 倍,1080 以上比較安全。
但無論如何,實際在系統裡持續監看行程會比較準。
apache 行程數:
ps ax | fgrep httpd | fgrep -v fgrep | wc -l
mysql connection 數
mysqladmin -u root -p processlist | fgrep localhost | wc -l

切記要監看記憶體還夠不夠用。要不然 linux 開始使用 swap,系統會慢得跟龜一樣。

wiseguy iT邦超人 1 級 ‧ 2011-08-01 22:30:31 檢舉

補充 apache 說明:如果 apache 就只用到 php,其它沒再加掛什麼模組,也沒用到認證,那麼只需要啟用這幾個模組就夠了,其它通通都可以 disble:
alias_module
authz_default_module
authz_host_module
deflate_module
dir_module
expires_module
headers_module
log_config_module
mime_module
php5_module
setenvif_module

disable 掉無用的模組之後,下 apachectl configtest 來檢查,會顯示有些行的指令不明 (unknow)。沒關係,就一一把它們 remark 掉即可。直到檢查結果為 Syntex OK,再下 service httpd restart 重新啟動 apache 即可。這樣可以節省 apache 不少記憶體用量。

6
bzbz
iT邦新手 2 級 ‧ 2011-08-01 18:29:42

重點是你第三句...難怪你網站會卡卡上身

chan15 iT邦新手 5 級 ‧ 2011-08-01 18:32:23 檢舉

沒辦法,這方面我盡力了

我要發表回答

立即登入回答