優化思路以及優化過程

2022-06-15 20:18:14 字數 3004 閱讀 3143

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分割槽...