gpt4 book ai didi

Java 应用服务器性能

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

我有一个有点过时的 Java EE 应用程序在 Sun Application Server 8.1(又名 SJSAS,Glassfish 的前身)上运行。同时有 500 多个用户时,应用程序变得慢得令人无法接受,我正试图帮助确定大部分执行时间花在了哪里以及可以采取哪些措施来加快速度。到目前为止,我们一直在使用 LoadRunner、应用服务器日志、Oracle statpack、snoop 进行试验和测量,调整应用服务器接受器和 session (工作线程)线程,调整 Hibernate 批处理大小和加入获取使用等,但在取得一些初步成果之后我们正在努力改善问题。

好的,问题介绍完了,下面是真正的问题:如果您有一个缓慢的 Java EE 应用程序在一个 CPU 和内存使用率从未超过 20% 的机器上运行,并且在与 500 多个用户一起运行时,您表现出两件事:1) 在同一个应用服务器 JVM 进程中请求静态文件非常慢,2) 在应用服务器 JVM 进程之外但在同一个机器上请求静态文件很快,你会调查什么?

我的想法最初跳到了应用程序服务器线程,包括接受器线程和 session 线程,认为即使是对静态文件的请求也在排队,等待可用线程,如果 CPU/内存没有真正负担那么更多线程井井有条。但是后来我们大幅增加了接受器线程和 session 线程,但没有任何改进。

澄清编辑:

1) 静态文件应该由网络服务器而不是应用服务器提供。我使用的事实是,在我们的例子中,这(不幸的是)不是配置,因此我可以看到它不执行的文件的应用程序服务器性能——因此不包括任何数据库性能成本等。

2) 我认为请求者和应用服务器之间没有代理,但即使有它似乎也没有过载,因为静态文件是从同一台应用服务器机器请求的,但在应用程序的 JVM 之外实例立即返回。

3) JVM 堆大小 (Xmx) 设置为 1GB。

感谢您的帮助!

最佳答案

SunONE 本身就是一个令人头疼的问题。我有一个非常相同的问题,你知道吗?将相同的应用程序简单地重新部署到 Weblogic 可将内存消耗和 CPU 消耗降低约 30%。

SunONE 是一个引用实现服务器,不应用于生产(不了解 Glassfish)。

我知道,这个答案并没有真正的帮助,但我注意到即使在非常简单的操作中也有相当多的停顿,例如从池中获取 bean 实例。

也许,尝试在同一台机器上部署 JBoss 或 Weblogic 会给您提示?

附言您不应该在应用程序服务器下提供静态内容(尽管我有时也会这样做,当 CPU 充足时)。

附言500 个并发用户是相当高的负载,我肯定会将 SunONE 置于缓存代理或提供静态内容的 Apache 之后。

关于Java 应用服务器性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290392/

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