最近项目产品开始考虑提供64位的版本,之前32位的LoadTest没有参与,文档也没有找到,只好重头开始,2周下来碰到不少问题。
这边主要谈下感受,这里主要是linux系统,web服务是apache(windows+iis的以后再讨论)
1. 硬件
主要就是机器,这次选取的机器都是一样配置的,DELL的T3400
2.ulimit
Linux系统下执行ulimit -a
core file size (blocks, -c) 0data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63369
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 2048
cpu time (seconds, -t) unlimited
max user processes (-u) 30000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
我们可以看到这些信息,具体什么含义请google,将所有机器的设置都修改成一样的,具体配置还是根据你的产品。
sudo vi /etc/security/limits.conf
sudo vi /etc/security/limits.d/90-nproc.conf (new for Fedora 13 and Redhat 6),如果发现ulimit -s老是不成功,看看有没有这个文件
sudo reboot
我个人修改了stack size,默认应该是10M的,我修改成2M;
另一个是max user processes,默认的太小是1024,需要加大,否则后面配置apache的mpm设置老是提示
[alert] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread
3. Apache
版本要一致,从官网下载编译安装,选择MPM Worker模式(apache2.0之后新特性,请自行Google)
查看版本
./httpd -vServer version: Apache/2.2.22 (Unix)
Server built: Mar 27 2012 14:03:52
查看模式
./httpd -lCompiled in modules:
core.c
mod_log_config.c
mod_expires.c
mod_headers.c
worker.c
http_core.c
mod_rewrite.c
mod_so.c
配置conf/extra/http-mpm.config
</IfModule>
里面的值请根据机器配置调整,每个设置含义请自行Google
Apache启动后,先检查logs/error.log,看看里面有没有错误
比如[error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
4. 服务
尽量减少其他进程的干扰,除了系统进程,只启动产品所用到的服务。
5.产品架构
熟悉自己的产品,使用了哪些技术,有哪些优势哪些薄弱的地方,瓶颈可能在哪些地方,优先测试
6. 负载均衡
单台机器负载 峰值:平均
多台机器负载 冗余,最终上线部署
(题外话:以前有人询问性能问题,我的回答是能用硬件解决的先考虑增加硬件,之后再来软件优化。可能有些人没有理解,
展开说下,我相信某个项目或产品在项目初期肯定充分比较过选择什么技术使用哪种框架,如果没有我只能无语,那么出现性能问题就是用户数达到某个数量级,
远远超出当初的规划,这个时候最快的做法就是增加硬件解决当前问题,之后软件优化或重构;过去做的5年规划可能赶不上公司3年的发展,而软件的优化往往牵一发而动全身,
增加硬件做负载均衡却是成本最低的。有人可能会说硬件很贵的,可能你考虑的是买新机器,可以考虑买二手服务器么或是自己组装,newegg早期使用的就是二手服务器,
google曾经用卡车去买来了大量废弃的内存条,很多服务器也是自己组装的,http://tech.sina.com.cn/i/2012-01-06/10336609256_3.shtml)
7. 性能测试工具
Windows下第一想到的是LoadRunner,Linux下免费的当然是Jmeter,熟悉工具也是必要的,
比如Jmeter的remote test,http://jmeter.apache.org/usermanual/remote-test.html。
8. 尝试使用多线程,增加JVM
现在的服务器基本都是多核的,过去硬件性能可能会影响或限制线程数目,随着硬件性能增强,可以增大例如Jmeter/Apache的线程数量。
java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结(http://hi.baidu.com/sdausea/blog/item/c599ef13fcd3a7dbf6039e12.html)9. 32位/64位
现在服务器系统基本都有64位的了,内存也是白菜价,个人电脑上个8G也很轻松,CPU也支持64位架构,项目采用64位会逐步普遍,但是千万不要认为64位的应用性能会更好,不一定的,
64位应用更占硬盘更吃内存,另外64位可能还会有兼容性的问题,不过64位应该是个趋势。
暂时想到的是这些。