- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
统一认证高并发优化过程
统一认证优化过程
Edited By Bruce Bob
统一认证是整个系统的入口,所以,统一认证对于大用户量下的并发处理能力直接关系到其他所有系统的使用。
我这里对统一认证高并发优化过程做一个整理。希望对以后其他的工程的集群不是也能提供一定的借鉴经验。
因为我对统一认证的程序还比较有信心,我们首先直接采用了nginx+tomcat双机集群进行并发300的测试。测试结果惨不忍睹。
然后果断采用单机tomcat先进行测试。主要测试tomcat在linux下并发能力。但是,在linux下测试结果依然惨不忍睹。
在测试的过程中,主要出现以下错误
Action.c(18): Error -26374: The above not found error(s) may be explained by header and body byte counts being 230 and 0, respectively.
Action.c(18): Error -26377: No match found for the requested parameter PeopleSoftJSessionID3. Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size
Action.c(18): Error -27791: Server 78 has shut down the connection prematurely
其中,27791和 26377错误非常多。在网上找了相关的解决方案之后,发现,有可能是loadrunner的问题。可能是脚本的自动关联出现了问题。因为我是做开发的,对loadrunner不熟悉,同测试部门的同事讨论之后,测试部的同事对测试的录制脚本进行了更改。然后继续进行测试,测试情况好多了。基本没有再出现这两个错误。测试并发100 勉强通过。整个登录流程大约需要4s。
此时虚拟机的配置参数是:
JAVA_OPTS=-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m
当我们采用并发150进行测试时,完全不能通过。用户数量增加到30左右就开始出错。
之前并发100是没有问题的。但这里怎么到50就出现大量的错误,都是服务器没有响应。后来查看tomcat相关日志,出现的错误时这样的:
java.lang.OutOfMemoryError: unable to create new native thread
凭借以往的经验,直接增大虚拟机内存配置。接着进行测试,结果测试的结果更加不理想,到了30左右就出现问题。
配置如下:
JAVA_OPTS=-Xms600m -Xmx1500m -Xss20m -XX:PermSize=300m -XX:MaxPermSize=600m
后来进行查询,发现了问题的所在。原来对于一般的内存泄漏导致的堆栈溢出,通常的错??信息主要有以下几种。1. java.lang.OutOfMemoryError: Java heap space
2. java.lang.OutOfMemoryError: PermGen space
3. java.lang.OutOfMemoryError: Requested array size exceeds VM limit
4. java.lang.OutOfMemoryError: reason stack trace (Native method)
分析server.log种的日志信息,得知是无法创建本地线程所致的问题。也就是说在压力环境下拥有大量的线程,或者本地内存耗尽时,企图创建新的线程时抛出。而系统能创建的线程数的计算公式如下:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
MaxProcessMemory 指的是一个进程的最大内存
JVMMemory JVM内存
ReservedOsMemory 保留的操作系统内存
ThreadStackSize 线程栈的大小
所以,如果配置的虚拟机参数存在,问题。会出现配置的内存越大,所能创建的进程(线程)越少的情况。
再次对tomcat进行优化,配置虚拟机参数如下。:
JAVA_OPTS=-server
原创力文档


文档评论(0)