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

第 7 章 Web Server Optimization

目錄

7.1. ulimit
7.1.1. open files
7.2. khttpd
7.3. php.ini
7.3.1. Resource Limits
7.3.2. File Uploads
7.3.3. Session Shared
7.3.4. PATHINFO
7.4. APC Cache (php-apc - APC (Alternative PHP Cache) module for PHP 5)
7.5. Zend Optimizer
7.6. eaccelerator

系統配置

  1. Intel(R) Xeon(TM) CPU 3.00GHz
  2. Memory 4G
  3. Ethernet adapter 1000M

7.1. ulimit

查看 ulimit

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 2048
cpu time               (seconds, -t) unlimited
max user processes              (-u) 77824
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
		

7.1.1. open files

對於linux系統,所有設備都以映射為設備檔案的方式存在,包括硬件(鍵盤,滑鼠,打印機,顯示器,串口,並口,USB,硬碟,內存,網卡,音效卡,顯卡,等等....),還有軟件(管道,socket),訪問這些資源,就相當與打開一個檔案,

所以"open files"檔案數限制很重要,預設值根本不能滿足我們。

查看檔案打開數

$ cat /proc/sys/fs/file-nr

3200    0       197957
已分配檔案句柄的數目     已使用檔案句柄的數目     檔案句柄的最大數目

查看所有進程的檔案打開數
    lsof |wc -l
查看某個進程打開的檔案數
	lsof -p pid |wc -l
			

臨時更改

# ulimit -n 65536
or
# ulimit -SHn 65536
or
# echo "65535" > /proc/sys/fs/file-max
			

永久更改

/etc/security/limits.conf

nobody          soft    nofile          40960
root            soft    nofile          40960
nobody          hard    nofile          40960
root            hard    nofile          40960
daemon          soft    nofile          40960
daemon          hard    nofile          40960
			

更省事的方法

*          soft    nofile          40960
*          hard    nofile          40960
			

最大綫程數限制 threads-max

查看當前值

# cat /proc/sys/kernel/threads-max
32624
		

設置

有多種方法加大Linux的threads數,下買是臨時更改

sysctl -w kernel.threads-max=65536
echo 65536 > /proc/sys/kernel/threads-max
		

永久修改

編輯/etc/sysctl.conf
增加
kernel.threads-max = 65536
#sysctl -p 馬上生效
		

以上數值僅供參考,隨着計算機發展,上面的值已經不太適合,當前流行的伺服器。