nginx響應請求
1:建立
socket
連線2: 開啟檔案,並沿
socket返回.
排查問題,也要注意觀察這兩點
,主要從系統命令:dmesg ,和
nginx
的error.log
來觀察優化過程:
1:判斷
nginx
的瓶頸1.1: 首先把
ab測試端的效能提高
,使之能高併發的請求
.易出問題: too many open files
原因 : ab在壓力測試時
,開啟的
socket
過多解決: ulimit -n 30000 (重啟失效
)觀察結果: nginx 不需要特殊優化的情況下
, 5000
個連線,1
秒內響應
. 滿足要求,但
wating
狀態的連線過多
.1.2: 解決
waiting
程序過多的問題
.解決辦法: keepalive_timeout = 0;
即: 請求結果後
,不保留
tcp連線
. 在高併發的情況下, keepalive會佔據大量的
socket連線.
結果: waiting狀態的連線明顯減少
.1.3: 解決服務端
too many open files
分析: nginx要響應
, 1是要建立
socket連線,
2 是要讀本地檔案
這兩個者限制.
1: nginx接受的
tcp連線多
,能否建立起來
?2: nginx響應過程
,要開啟許多檔案
,能否開啟
?第1個問題
: 在核心層面(見下
)第2個問題 (見下
)系統核心層面:
net.core.somaxconn = 4096 允許等待中的監聽
net.ipv4.tcp_tw_recycle = 1 tcp連線快速**
net.ipv4.tcp_tw_reuse = 1 tcp連線重用
net.ipv4.tcp_syncookies = 0 不抵禦洪水攻擊
ulimit -n 30000
nginx層面
:解決: nginx.conf 下面
: work_connection
加大socket:worker_connections 10240;
檔案:worker_rlimit_nofiles 10000;
keepalive_timeout 0;
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+php+mysql+nginx
在引入memcached後
,效能提公升不明顯
,甚至還略有下降
memcached使
50%的請求變快了
,但是一部分
,反倒慢了
.原因在於--php->memcached也要建立
tcp連線
,代價挺高
,但快取了資料之後,就省去了
mysql
的查詢時間
.總結: memcached適合存複雜的
sql,
尤其是連線查詢
/模糊查詢的
sql結果
memcached伺服器的優化
(集中在核心的
ipv4
設定上,
不再重複
)
golang gc 優化思路以及例項分析
乙個即將上線的go 寫的高頻服務,壓測的時候發現 gc 特別高,高到10 15 左右了,本文記錄下優化 gc 的過程和和思路。線上環境1.10.首先,檢視gc 是否有異常,我們可以使用 gctrace 跟蹤實時的gc 執行下面命令可以看到gc 的實時資訊。godebug gctrace 1 go r...
OXWALL優化思路
閱讀oxwall的初始化 日誌實現部分,重點關注主頁的資料讀取流程,在資料讀取流程中增加寫日誌,可以看到初始化頁面涉及資料庫讀取的操作異常多。這將是效率的瓶頸,應該考慮將資料快取到redis中,並結合訊息佇列更新快取和資料庫。研究 安全隱患sql注入 csrf 偽造的跨站點請求 跨站點指令碼 xss...
mysql優化思路
調優思路 1.資料庫設計與規劃 以後再修該很麻煩,估計資料量,使用什麼儲存引擎 2.資料的應用 怎樣取資料,sql語句的優化 3.mysql服務優化 記憶體的使用,磁碟的使用 4.作業系統的優化 核心 tcp連線數量 5.公升級硬體裝置 磁碟io規劃 raid技術 raid0 xfs swap分割槽...