MySQL數(shù)據(jù)庫作為一種常見的開源數(shù)據(jù)庫系統(tǒng),被廣泛應用于Web開發(fā),而Linux操作系統(tǒng)被眾多Web服務器采用。在Linux下使用MySQL連接數(shù),需要做一些必要的優(yōu)化。
首先需要了解的是,MySQL在默認情況下的最大連接數(shù)是100個。但對于高負載的網(wǎng)站來說,這個限制顯得非??量?。
下面是linux下支持MySQL連接數(shù)的一些常用參數(shù):
#查看當前系統(tǒng)的文件描述符限制 ulimit -n #修改最大可用的文件描述符數(shù) ulimit -n 102400 #查看當前打開文件夾數(shù) lsof | wc -l #查看當前進程數(shù) ps -ef | wc -l #查看當前系統(tǒng)TCP連接情況 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' #修改系統(tǒng)參數(shù) sysctl -w net.ipv4.tcp_fin_timeout=30 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_tw_recycle=1 sysctl -w net.ipv4.ip_local_port_range="1024 65000" sysctl -w net.ipv4.tcp_keepalive_time=600 sysctl -w net.core.somaxconn=65535 sysctl -w net.core.netdev_max_backlog=262144 sysctl -w net.ipv4.tcp_max_syn_backlog=262144 sysctl -w net.ipv4.tcp_syncookies=1 sysctl -p
上述參數(shù)中,ulimit -n用于查看當前系統(tǒng)的文件描述符限制,同時也可以修改最大可用的文件描述符數(shù)來增加MySQL的連接數(shù)限制;lsof用于查看當前打開文件夾數(shù);ps -ef用于查看當前進程數(shù);netstat -n用于查看當前系統(tǒng)TCP連接情況。
修改系統(tǒng)參數(shù)需要使用sysctl命令。其中,net.ipv4.tcp_fin_timeout是連接斷開后等待釋放的時間,一般設定為30秒;net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle分別是TCP連接復用和快速回收,可以降低TCP連接數(shù);net.ipv4.tcp_max_syn_backlog是半連接池的最大長度,一般設為262144;net.ipv4.tcp_syncookies是是否開啟TCP SYN Cookie機制,在高負載情況下可以開啟;net.core.somaxconn是系統(tǒng)最大的連接數(shù),一般設為65535;net.core.netdev_max_backlog是內(nèi)核級別的最大隊列數(shù),一般設為262144。
以上參數(shù)的設定,可以使Linux系統(tǒng)支持更多的MySQL連接數(shù),提高Web服務器的性能。