Chinaunix首页 | 论坛 | 博客
  • 博客访问: 664740
  • 博文数量: 53
  • 博客积分: 830
  • 博客等级: 准尉
  • 技术积分: 1089
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-31 18:23
文章存档

2019年(1)

2018年(1)

2016年(1)

2015年(1)

2014年(12)

2013年(4)

2012年(33)

分类: LINUX

2012-05-29 13:12:02

                               某项目1
一.项目1问题及解决:

问题:
 1.测试环境与上线环境不一致
 2.Socket.AMF,HTTP相关接口的性能差
 3.测试发现TPS不稳定,且web服务器有四核,每次测试有一核cpu占100%,其它三核空闲。
 
解决:

1.建议测试环境与上线环境一致,所有服务都建在linux环境下

2.缓存优化

3.学习了如何查看表是否是innodb,db修改成innodb的形式

4.db三种变量在my.conf中修改才比较长期有效

5.tomcat自带的manager管理程序不运行时也占cpu25%

6.解决2的真正原因:数据库连接池都修改大了就ok了


修改jvm:  (解决:测试发现TPS不稳定,且web服务器有四核,每次测试有一核cpu占100%,其它三核空闲)

catalina.sh JAVA_OPTS='-Xms6096m -Xmx6096m -XX:+UseCompressedOops -XX:+UseParallelGC -XX:ParallelGCThreads=4'  修改为:

$JAVA_ARGS .= " -Dresin.home=$SERVER_ROOT -server -Xms2048M -Xmx2048M -Xmn512M -XX:PermSize=256M -XX:MaxPermSize=256M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -

XX:-Xss128k-Xloggc:log/gc.log ";

 
7.修改成:curl, 把php程序中fsocketopen方式修改成curl(结果tps提高很多,响应时间也变短了)

看是否用了ehcache(目录/WEB-INF/spring-servlet.xml)

8.修改ehcache.xml(把相应待测试接口的cache相应修改长,最后得出tps不稳定,cache是一个原因)

9.socket的性能改进,优化了程序(一个是测试数据符合流程,另一个是网络连接管理),TPS提高很多

以下是程序的优化:
压力测试中修改项:

1.jvm内存管理调优

JAVA_OPTS='-Xms3596m -Xmx5596m -XX:+UseCompressedOops -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -Xloggc:log/gc.log'

 
设置jvm内存回收策略,即时小量垃圾回收,解决大量用户并发访问时内存增长过快,jvm的默认垃圾回收时导致的性能降低,性能波动过大。

2.数据库连接池从最大300加到最小800,最大1900。
3.登陆会话session保存的用户对象调整大小,之前保存的是完整用户信息的对象,调整为只保存用户id的小对象,减小大量用户登录时的session内存占用。
4.使用java的EHCache缓存部分查询,因为是tomcat进程内的缓存,且机器内存为8G,目前查询缓存设置时间为2分钟,缓存命中率还有待提高。之后会用MC分布式缓存扩充缓存的内存大小。
5.应用接口优化。sql语句优化。
6.socket服务测试中碰见的问题有:

   6.a. socket连接没有关闭,服务端要做好异常的socket连接管理,及时关闭异常连接。
   6.b. socket消息流程问题.在按业务流程测试的时候,如果出现非正常流程的消息,服务端如果不
     做错 误通知的话,测试就会卡住,压力上不去。
     解决办法是做好错误通知提示,这样测试端才能及时响应。另外要配置好测试数据,
     保证流程相关   数据的正确性。
   6.c.socket粘包问题。测试脚本需要处理服务端的多个应用协议包返回及半包返回的情况。
7.amf接口测试问题
需要注意amf1.0和amf3.0的差异。(conn.setObjectEncoding(0);,这个注释掉就是默认的新的amf3)
8.操作系统参数优化
9.数据库参数优化
10.应用服务器配置调优

二.测试结论:
    经过程序优化后,问题解决,测试达到预期,测试通过!
阅读(1197) | 评论(0) | 转发(0) |
0

上一篇:linux中的lsof

下一篇:某项目2

给主人留下些什么吧!~~