这段时间负责公司的服务端Java程序开发,做了一个游戏的登录、注册、支付、token验证以及相关统计接口的服务端程序。
考虑到游戏中如果是多用户的情况下登录注册接口在开服的时候会产生很大的并发,所以再上线之前做了一些压力测试。
服务器配置:亚马逊云服务器8核心、15G内存、200G硬盘、网络带宽很好这里不考虑了。
测试工具jmeter
刚开始使用的是tomcat默认的配置,所以我用jmeter做测试的时候500个并发就出现了很多超时的情况,后来将tomcat中得server.xml文件做了修改。
对于tomcat的优化主要涉及到,摒弃tomcat默认的bio的阻塞模式的http请求修改为nio模式,并调整maxThreads以及acceptCount的大小。
这里acceptCount>=maxThreads
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="1000" minSpareThreads="100"
prestartminSpareThreads="true" maxQueueSize="1000"/>
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443"
executor="tomcatThreadPool"
enableLookups="false"
acceptCount="1000"
maxPostSize="10485760"
compression="on"
disableUploadTimeout="true"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
acceptorThreadCount="2"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
URIEncoding="utf-8"/>
按照如上的方式修改tomcat后,我设置1000个并发也不会出现超时了。
然后再看看发生http请求后服务器内存占用情况,使用top命令和free命令,并继续优化。
我会继续更新上线后的情况