3. 优化
优化需要借助监控工具,返回系统的状态找到系统的瓶颈,然后修改参数
3.1操作系统的优化
这里的操作系统优化主要是针对Linux,我们可以借助Spotlight on Unix这款工具监控操作系统
Spotlight可以给管理员提供一个直观的图形化界面,系统的瓶颈一目了然
监控时,先要向对应的目标服务器建立一个连接,Spotlight默认禁用了root帐号连接Linux,所以需要事先在系统中添加一个用户
如果系统中出现瓶颈,Spotlight会自动报警, 出现了警告信息后,请自行到网上搜索解决办法
操作系统的主要瓶颈通常在于应用程序允许打开的文件数,如果出现Too many open files错误,请
修改/etc/security/limits.conf
在文件最末尾添加* - nofile 965355
设置系统允许打开的文件数量,注意,这个数值不能超过100w,否则系统无法登陆
3.2Oracle数据库的优化
我们可以借助Spotlight on Oracle工具监控数据库
Oracle监控与Spotlight on Unix类似
Oracle的优化中涉及到两个关键参数processes以及sessions
分别表示Oracle的进程数和会话数,sessions=processes*1.1+1
如果是Oracle出现了瓶颈,则修改processes
注意,同样这个数值也不要轻易改变,数值是Oracle根据服务器的性能调整的结果,如果设置过大,会导致系统不稳定
3.3Web服务器软件的优化
这里的Web服务器软件主要是针对Nginx,我们可以根据LoadRunner压力测试得出的结果,以及Nginx自身产生的日志信息,来调整Nginx参数
worker_processes 8;
nginx进程数,建议按照cpu数目来指定,一般为它的倍数。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000
01000000 10000000;
为每个进程分配 cpu,上例中将 8 个进程分配到 8 个 cpu,当然可以写多个,或者将一
个进程分配到多个cpu。
worker_rlimit_nofile 102400;
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文
件数 (ulimit -n) 与 nginx进程数相除, 但是nginx分配请求并不是那么均匀, 所以最好与ulimit
-n的值保持一致。
use epoll;
使用epoll的 I/O模型。
worker_connections 102400;
每个进程允许的最多连接数,理论上每台 nginx 服务器的最大连接数为
worker_processes*worker_connections。
keepalive_timeout 60;
keepalive超时时间。
总结
1. Web服务器的性能调整是一个综合指标,不可能当作某个程序上的bug来处理,服务器的整体性能牵涉到服务器上的各种软硬件环境;
2. Linux环境下,各种配置参数配置完,一定要对比验证一下配置是否生效了,只有使用排除法才能避免问题的复杂化;
3. 有J2EE应用的网站,在大并发情况下,数据库是一个很大的瓶颈,需要特别注意;
4. 前端Web服务器的日志输出也是很重要的环节,在大并发下,一定要去掉日志输出,防止对性能的影响;
5. 测试环境很重要,能够在第一时间给出数据,与生产环境做出比较,就能判断错误的方向。