重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
前言
首先我們來看如何標(biāo)識一個TCP連接?系統(tǒng)是通過一個四元組來識別,(src_ip,src_port,dst_ip,dst_port)即源IP、源端口、目標(biāo)IP、目標(biāo)端口。比如我們有一臺服務(wù)192.168.0.1,開啟端口80.那么所有的客戶端都會連接到這臺服務(wù)的80端口上面。有一種誤解,就是我們常說一臺機(jī)器有65536個端口,那么承載的連接數(shù)就是65536個,這個說法是極其錯誤的,這就混淆了源端口和訪問目標(biāo)端口。我們做壓測的時(shí)候,利用壓測客戶端,這個客戶端的連接數(shù)是受到端口數(shù)的限制,但是服務(wù)器上面的連接數(shù)可以達(dá)到成千上萬個,一般可以達(dá)到百萬(4C8G配置),至于上限是多少,需要看優(yōu)化的程度。具體做法如下:
我們在壓測一臺目標(biāo)服務(wù)器,想看下負(fù)載的連接數(shù),當(dāng)我們壓到一定數(shù)量的時(shí)候,控制臺突然報(bào)"too many open files",這是因?yàn)閘inux系統(tǒng)創(chuàng)建一個TCP連接的時(shí)候,都會創(chuàng)建一個socket句柄,每個socket句柄就是一個文件句柄。操作系統(tǒng)對打開的文件句柄數(shù)量是有限制的。Unix/Linux 基本哲學(xué)之一就是 "一切皆文件",要提高TCP承載量,就需要調(diào)整文件句柄。
第一步:修改文件句柄數(shù)量限制
# 查看當(dāng)前用戶允許TCP打開的文件句柄大數(shù) ulimit -n # 修改文件句柄 vim /etc/security/limits.conf * soft nofile 655350 * hard nofile 655350