Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

第 42 章 Web Server Optimization

目录

42.1. ulimit
42.1.1. open files
42.2. khttpd
42.3. php.ini
42.3.1. Resource Limits
42.3.2. File Uploads
42.3.3. Session Shared
42.3.4. PATHINFO
42.4. APC Cache (php-apc - APC (Alternative PHP Cache) module for PHP 5)
42.5. Zend Optimizer
42.6. eaccelerator

系统配置

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

42.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
		

42.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 马上生效
		

以上数值仅供参考,随着计算机发展,上面的值已经不太适合,当前流行的服务器。