gpt4 book ai didi

java - sun.security.provider.SHA2 使用 100% cpu 并在一段时间后挂起 5 分钟

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:48 30 4
gpt4 key购买 nike

我有一个奇怪的行为,也许你可以帮助我。

环境是

  • jdk_7u40(尝试使用具有相同行为的 jdk_7u51)
  • debian 6.0(在 windows 上我从来没有遇到过这个问题)
  • jboss 7.1.1
  • 基于 spring 框架的 Geoserver 2.4.x(尝试 .3 和 .4 结果相同)
  • 其他war模块(不是基于spring的,但是geoserver对它们有一些依赖)

问题是,在 jboss 运行几个小时后,当我尝试登录到 geoserver 的 Web 界面(一个 POST 到 j_spring_security servlet)时,它花了很多(4-5 分钟)才能登陆应用程序的欢迎页面。

使用jstack,我发现有一个线程一直消耗100%的核心,并且进程一直在这里工作

at sun.security.provider.SHA2.lf_S(SHA2.java:162)
at sun.security.provider.SHA2.lf_sigma0(SHA2.java:171)
at sun.security.provider.SHA2.implCompress(SHA2.java:225)
at sun.security.provider.SHA2.implDigest(SHA2.java:118)
at sun.security.provider.DigestBase.engineDigest(DigestBase.java:186)
at sun.security.provider.DigestBase.engineDigest(DigestBase.java:165)
at java.security.MessageDigest$Delegate.engineDigest(MessageDigest.java:576)
at java.security.MessageDigest.digest(MessageDigest.java:353)
at java.security.MessageDigest.digest(MessageDigest.java:399)
at org.jasypt.digest.StandardByteDigester.digest(StandardByteDigester.java:979)
- locked <0x00000006f8c30bb0> (a java.security.MessageDigest$Delegate)
at org.jasypt.digest.StandardByteDigester.matches(StandardByteDigester.java:1099)
at org.jasypt.digest.StandardStringDigester.matches(StandardStringDigester.java:1052)
at org.jasypt.util.password.StrongPasswordEncryptor.checkPassword(StrongPasswordEncryptor.java:99)
at org.jasypt.spring.security3.PasswordEncoder.isPasswordValid(PasswordEncoder.java:204)
at org.geoserver.security.password.AbstractGeoserverPasswordEncoder.isPasswordValid(AbstractGeoserverPasswordEncoder.java:138)
at org.geoserver.security.password.GeoServerMultiplexingPasswordEncoder.isPasswordValid(GeoServerMultiplexingPasswordEncoder.java:75)
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:64)

你们中有人遇到过类似的问题吗?

编辑(有解决方法)

我发现问题与 CMS 垃圾收集器和 permgen 空间的增加有关。

环境

应用服务器是 JBoss 7.1.1,其中部署了 5 个 war(Geoserver 等)。所有 war 之间都有共享的依赖关系(也有 Geoserver); Java 正在运行 -XX:+UseParallelOldGC -XX:SoftRefLRUPolicyMSPerMB=36000

会发生什么

当执行完整的 gc 时,permgen 空间会比已用空间增加很多。之后,sun.security.provider.SHA2.* 中方法的计算变得非常缓慢。

我是怎么解决的

转向 G1GC 垃圾收集器为我解决了这个问题(目前我正在使用以下选项 -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=1 -XX:NewRatio=1 -XX: MaxTenuringThreshold=15 -XX:G1HeapRegionSize=32m )

最佳答案

我没有。你能在 GeoServer 自己的错误跟踪器上报告这个问题吗? http://jira.codehaus.org/browse/GEOS

关于java - sun.security.provider.SHA2 使用 100% cpu 并在一段时间后挂起 5 分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21551289/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com