apache和mysql連接性能優化

一、關於apache

1、首先,在頁面訪問變慢情況發生時,使用 top 命令查看了服務器的負載情況,發現負載並不高,初步估計不是程序的問題。
2、然後,查看了線程中的 httpd 的數量, ps -aux | grep httpd | wc -l 發現,線程數已經達到了 apache 設置的最大值。由此斷定是網站訪問人數過多造成了訪問過慢。 

3、爲了驗證,查看了連接數和當前的連接數,分別是
    netstat -ant | grep $ip:80 | wc -l
    netstat -ant | grep $ip:80 | grep EST | wc -l
    發現果然,連接數特別多,遠遠超過我們的估計值。

開始修改:

apache配置文件:httpd.conf

默認配置如下:

<IfModule mpm_prefork_module>
    StartServers          5                  起始進程數
    MinSpareServers       5                  最小空閒進程數(等待)
    MaxSpareServers       10                 最大等待進程數
    ServerLimit           256              允許最大連接數上線
    MaxClients            150              可同時處理的最大請求數
    MaxRequestsPerChild   0              每個子進程能夠處理的最大請求數,0爲無限
</IfModule>

更改配置如下:

<IfModule mpm_prefork_module>
    StartServers          10
    MinSpareServers       10
    MaxSpareServers       15
    ServerLimit           2000
    MaxClients            1500
    MaxRequestsPerChild   10000
</IfModule>

 此更改後,web服務器性能會大大提高,LR測試時,就不會老出現server has shutdown the connecttions或者connect timeout之類的錯誤了,剩下的就是程序代碼優化的問題了

二、關於mysql

另外,數據庫比如mysql之類的,還有一個max_connections之類的配置,一般需要打開,使得不會因爲數據庫的限制導致連接數上不來

MYSQL數據庫安裝完成後,默認最大連接數是100,一般流量稍微大一點的論壇或網站這個連接數是遠遠不夠的,增加默認MYSQL連接數的方法有兩個

方法一:進入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改爲 max_connections=1000 服務裏重起MYSQL即可

方法二:MySQL的最大連接數默認是100客戶端登錄:mysql -uusername -ppassword

設置新的最大連接數爲200:mysql> set GLOBAL max_connections=200

顯示當前運行的Query:mysql> show processlist

顯示當前狀態:mysql> show status

退出客戶端:mysql> exit

查看當前最大連接數:mysqladmin -uusername -ppassword variables

ps:增加mysql的連接數對系統消耗其實影響不大

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章