Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構

23.2. Session

firewall (nat session) - switch (Forwarding bandwidth) - os (ulimit,sysctl) - application (httpd,vsftpd,tomcat ...)

會話數,國人俗稱並發數。當你的頻寬沒有滿,但tcp不能建立連接,這時你就要考慮會話數了。

23.2.1. firewall

購買防火牆的時候主要有兩個指標,一是會話數,二是頻寬,三是配備模組。售前工程師都會交代清楚。

例如 Cisco ASA 5550 會話數65萬,2個1G介面,可選IPS模組等等...

使用下面命令可以查看當前會話數

show conn count
			

23.2.2. Server

Linux 影響會話數的的參數與配置檔案

/etc/security/limits.conf , /etc/security/limits.d

nofile - max number of open files 在POSIX系統中硬件,管道,Socket 均被看作是一個設備,如硬碟是塊設備,顯示器是字元設備,操作這些設備均使用c的open函數,被算作打開一個檔案。所有設備都是如此,加上web伺服器還要讀取很多HTML檔案,系統對nofile 開銷是非常巨大的。

nproc - max number of processes 目前多綫程是主流,使用多綫程技術這個參數可以不關心。像Oracle,PostgreSQL, Apache prefork,你就需要關心這個參數

/etc/sysctl.conf , /etc/sysctl.d/

net.ipv4.ip_local_port_range = 1024 65500 可用連接埠範圍

tcp 協議當你嘗試主動與伺服器建立連接,如:telnet 172.16.0.1 80,本地會開啟一個大於1024小於65500的連接埠

client: localhost:1025 --- 172.16.0.1:80 server

以上參數要綜合你的CPU處理能力,內存空間,硬碟IO等等,才能配置出合理數值

配置過大(小馬拉大車),超出你的伺服器處理能力,導致伺服器無響應,最終只能重啟

配置過小(大馬拉小車),你的伺服器長時間處于空間狀態,CPU,內存沒有得到合理使用

在我的《Netkiller Linux 手札》中你可以找到具體的設置方法。

23.2.3. application

連接數受限與limits與sysctl

apache : httpd/conf/extra/httpd-mpm.conf

			
<IfModule mpm_worker_module>
    ServerLimit         16
    ThreadLimit         256
    StartServers        8
    MaxClients          4096
    MinSpareThreads     64
    MaxSpareThreads     256
    ThreadsPerChild     256
    MaxRequestsPerChild 10000
</IfModule>
			
			

mysql : /etc/my.cnf

			
[mysqld]
max_connections=250
			
			

不依依列舉,有興趣看我的系列文檔。