本文主要針對如何通過配置php-fpm多例項,及nginx對多例項負載均衡之配置,不涉及安裝。從實踐來看,單例項最多可以開到200-300左右的程序,開到500以上就容易出錯了。每個程序占用的內存在5m-15m左右,按平均10m計算,500個程序也只有5g,而現在很多高效能機都是64g甚至128g的記憶體,這樣單例項是無法全面使用上記憶體資源的。
lnmp或者lnamp環境的配置這裡不做介紹,只講在lnmp環境的基礎上配置多例項的過程。因為我在使用的是lnamp環境,所以額外編譯乙份php到/usr/local/php-fpm/,配置檔案在/etc/php-fpm/,並在此基礎上做的筆記。
先修改三個值:1,以static方式,也就是固定程序數量執行php-fpm。2,每個例項建立100個worker程序。(不宜太多,避免不穩定)3,每個程序執行完200次請求即退出。(避免php的記憶體洩露問題,也就是記憶體越用越多)
sed -i 's#pm = dynamic#pm = static#' /etc/php-fpm/php-fpm.conf
sed -i 's#pm.max_children = 5#pm.max_children = 100#' /etc/php-fpm/php-fpm.conf
sed -i 's#;pm.max_requests = 500#pm.max_requests = 200#' /etc/php-fpm/php-fpm.conf以下為複製php-fpm.conf和php-fpm服務管理指令碼的命令
cd /etc/php-fpm/
cp php-fpm.conf php-fpm-1.conf
sed -i 's#listen = 127.0.0.1:9000#listen = 127.0.0.1:9001#' php-fpm-1.conf
sed -i 's#\[www\]#\[php-fpm-pool-1\]#' php-fpm-1.conf
sed -i 's#pid = run/php-fpm.pid#pid = run/php-fpm-1.pid#' php-fpm-1.conf
cd /etc/init.d/
cp php-fpm php-fpm-1
sed -i 's#/etc/php-fpm/php-fpm.conf#/etc/php-fpm/php-fpm-1.conf#' php-fpm-1
sed -i 's#/var/run/php-fpm.pid#/var/run/php-fpm-1.pid#' php-fpm-1
service php-fpm-1 restart執行完上面的命令即複製了乙份php-fpm,服務名和配置檔名均為php-fpm-1。再複製更多份,把上面的命令上的-1替換為-2,listen監聽埠往上修改,然後再執行一遍就ok。然後寫乙個restart_php_fpm.sh的檔案,內容為service php-fpm-1 restartservice php-fpm-2 restartservice php-fpm-3 restart... ...可以用來啟動和重啟所有的php-fpm例項。關閉用命令killall php-fpm即可。然後是nginx配置。在http段加入:
upstream php-fpm-pool 修改server段:
location ~ .*\.(php|php5)$ 配置結束。
MySQL多例項執行
mysql多例項執行 更新 2010年10月19日 最近幾天研究了一下怎麼讓mysql實現多例項執行,當然也是有需求才研究的。當然少不了要看許多網上的文章和官方手冊。一共總結出3種多例項啟動的方法 第一種 安裝兩個msyql,在啟動時指明不同的port和defaults file即可。第二種 使用m...
MySQL多例項執行
原始出處 mysql 多例項執行 最近幾天研究了一下怎麼讓mysql 實現多例項執行,當然也是有需求才研究的。當然少不了要看許多網上的文章和官方手冊。一共總結出3 種多例項啟動的方法 第一種 安裝兩個msyql 在啟動時指明不同的port 和defaults file 即可。第二種 使用mysqld...
redis多例項執行
有的時候會遇到一種情況,在一台伺服器,乙個redis例項會出現不夠用的情況 那麼這時我們可以建立多個例項,以滿足不同的業務需求和功能需求 1.首先建立乙個執行redis的普通使用者 useradd s sbin nologin g zxredis zxredis 2.然後給相應的目錄授權 chown...