小编Rud*_*dom的帖子

Java vm因所有线程忙于String操作而变慢

我遇到了一个非常奇怪的问题.我的tomcat完全以大约25%的CPU 24/7运行,但有些日子我的CPU上升到60%并且系统停止运转并且无法恢复.

当我在减速期间进行线程转储时,几乎所有线程都忙于某种String或相关操作.

没有OutOfMemory错误或抛出任何异常,所有请求仍然处理但响应时间恶化到第n度,即使次秒请求减慢到60秒甚至更长.

我的服务器配置如下:

    Ubuntu 12.04.2 LTS
    Linux 3.2.0-38-virtual #60-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
    java version "1.7.0_13"
    Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
    export JAVA_OPTS='-server
    -Xms18g -Xmx18g
    -XX:MaxPermSize=512m
    -XX:ThreadStackSize=512
    -XX:NewRatio=1
    -XX:SurvivorRatio=4
    -XX:+UseConcMarkSweepGC
    -XX:+UseParNewGC
    -XX:+CMSClassUnloadingEnabled
    -Xloggc:/usr/tomcat/logs/gc.log
    -XX:+PrintGCDetails
    -XX:+PrintGCDateStamps
    -XX:+PrintTenuringDistribution
    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=9999
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    -Djava.awt.headless=true'

单击此处下载线程转储.我删除了大量的线程及其stackTraces

单击此处下载vmstat日志

点击这里下载gc log

关于这个原因的任何想法?谢谢

java performance tomcat jvm

24
推荐指数
1
解决办法
6115
查看次数

AS400.validateSignon()不会将失败的登录尝试重置为0

当我使用com.ibm.as400.access.AS400.validateSignon()来验证用户的凭据并且他们通过验证并且已成功连接时,它不会将"失败的登录尝试"重置为0.

输入错误密码时,"登录尝试失败"字段会递增; 成功签署"失败的登录尝试"仍然保持有无效的登录.奇怪的是,"之前的登录"会使用正确的日期和时间进行更新.

这是as400上的DSPUSRPRF转储:

User profile . . . . . . . . . . . . . . . : BOB
Previous sign-on . . . . . . . . . . . . . : 12/12/05 21:34:08
Password verifications not valid . . . . . : 4
Status . . . . . . . . . . . . . . . . . . : *ENABLED
Run Code Online (Sandbox Code Playgroud)

我唯一能够通过使用工具箱禁用和重新启用用户来重置"失败登录尝试".这不是一个可行的解决方案,因为它会更新用户配置文件的更改日期和时间.

这种行为与处理我们的绿屏telnet会话的方式相矛盾,当用户登录as400时,"失败的登录尝试"被归零.

感谢任何建议和/或决议.

jt400 ibm-midrange

5
推荐指数
1
解决办法
1507
查看次数

标签 统计

ibm-midrange ×1

java ×1

jt400 ×1

jvm ×1

performance ×1

tomcat ×1