13、nginx服務叢集搭建以及優化

3333333_發表於2020-11-21

Nginx---->php-fpm之間的優化

 

 

如上圖,在很多個nginx來訪問fpm時, fpm的程式要是不夠用, 會生成子程式.

 

生成子程式需要核心來排程,比較耗時,

如果網站併發比較大,

我們可以用靜態方式一次性生成若干子程式,保持在記憶體中.

 

方法 -- 修改php-fpm.conf

Pm = static  讓fpm程式始終保持,不要動態生成

Pm.max_children= 32  始終保持的子程式數量

 

Php-mysql的優化

 

Linux機器下 ,php 通過IP連線其他mysql伺服器時,容易出的問題

能ping能,但connect不到.

 

 

一般是由:mysql伺服器的防火牆影響的.

 

併發1萬連線,響應時間過長.

 

優化思路: 同上的nginx

1: 核心層面,加大連線數,並加快tcp回收

2: mysql層面,增大連線數

3: php層面,用長連線,節省連線數

4: 用memcached快取,減輕mysql負擔

 

具體:

1.1  , PHP伺服器增大 ulimint -n選項

1.2 mysql伺服器核心配置

新增或修改如下選項

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_syncookies = 0

 

# syscttl -p 使修改立即生效

 

2.1  修改mysql.cnf

Vi  /etc/my.conf

# service mysqld restart 重啟mysql

 

3.1 PHP層面 ,用長連線

Mysql_connect ---> mysql_pconnect

注: pconnect 在PHP以apache模組的形式存在時,無效果.

 

Nginx+phjp+mysql+nginx

在引入memcached後,效能提升不明顯,甚至還略有下降

 

memcached使50%的請求變快了,但是一部分,反倒慢了.

原因在於--PHP->memcached也要建立tcp連線,代價挺高,

但快取了資料之後,就省去了mysql的查詢時間.

 

總結: memcached適合存複雜的sql,尤其是連線查詢/模糊查詢的sql結果

 

Memcached伺服器的優化(集中在核心的ipv4設定上,不再重複)

 

 

相關文章