Java 应用程序服务器性能

2024-01-03

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

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

我的想法最初跳到了应用程序服务器线程,包括接受器线程和会话线程,认为即使是静态文件的请求也在排队,等待可用的线程,如果 CPU/内存没有真正被占用,那么更多的线程就可以了。但后来我们大幅提升了接受器和会话线程,但没有任何改善。

澄清编辑:

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

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

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

谢谢你的帮助!


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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 应用程序服务器性能 的相关文章

  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • org.springframework.validation.BeanPropertyBindingResult异常

    嗨 我是 spring 框架的新手 我做了一个小例子 我尝试使用 spring 验证 api 验证我的输入字段 这是代码 RequestMapping value applicationFormSubmit method RequestMe
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 在 Win32 API 中绘制格式化文本的最快方法是什么?

    我正在使用普通 Win32 API 在 C 中实现一个文本编辑器 并且我正在尝试找到实现语法突出显示的最佳方法 我知道有像 scintilla 这样的现有控件 但我这样做是为了好玩 所以我想自己完成大部分工作 我还希望它又快又轻 从我到目前
  • TensorFlow 中的高效图像膨胀

    我正在寻找一种有效的实施方式形态学图像膨胀 https en wikipedia org wiki Dilation morphology 在 TensorFlow 中使用方形内核 正如 OpenCV 所示 与实际效果相比 显而易见的方法似
  • 在 React.js 应用程序中从广告合作伙伴加载外部脚本

    我想在我的 React js Web 应用程序中包含两种类型的广告 div div 还有这个广告
  • SQL Server:返回字符串过程 INITCAP

    这就是我所做的 create proc INITCAP string varchar 30 as begin SET string UPPER LEFT string 1 LOWER RIGHT string LEN string 1 en
  • 使用 bootstrap 进行分位数回归的置信区间

    我正在尝试获取线性和分位数回归的五种引导区间 我能够使用 Boot from 引导并找到线性回归的 5 个引导区间 分位数 正常 基本 学生化和 BCa car和 boot ci 来自boot 当我尝试使用 rq 对分位数回归执行相同操作时
  • 使用 Entity Framework 4 时如何返回数据读取器?

    我想使用 LINQ 和 EntityFramework 上下文定义数据库查询 但我不希望返回实体 我想要一个数据读取器 我怎样才能做到这一点 这是为了将行导出到 CSV 干杯 伊恩 如果你需要这个 你很可能正在做一些意想不到的事情 通过查询
  • 理解声明 C 字符串的两种方法[重复]

    这个问题在这里已经有答案了 几周前 我开始学习编程语言 C 我了解 HMTL CSS Javscript PHP 和基本服务器管理等 Web 技术 但 C 语言让我感到困惑 据我了解 C 语言没有字符串数据类型 只有字符数据类型 但我可能是
  • 基本 iPhone 定时器示例

    好吧 我在网上搜索过 甚至在几本书中寻找答案 因为我无法理解 NSTimer 的苹果文档 我正在尝试在同一视图上实现 2 个计时器 每个计时器都有 3 个按钮 开始 停止 重置 第一个计时器从 2 分钟开始倒计时 然后发出蜂鸣声 第二个计时
  • AWS Elastic Beanstalk - 更改 webapp 文件夹的所有者

    我已使用 AWS Elastic Beanstalk 成功创建了一个应用程序 并使用 Git 上传了该应用程序 我剩下要做的就是创建我的settings php 文件 一切都应该可以正常工作 但是 当我使用 ec2 user 用户身份通过
  • Graphviz Dot 中奇怪的边缘位置

    我有一个模块 可以自动输出 以点格式 用某种汇编语言 我的编译器的 IR 编写的函数 节点是使用 记录 形状打印的基本块 问题在于边缘采用了奇怪的路线 例如 digraph node shape record n0 label
  • Apple 智能横幅上的应用程序参数是否会在安装时传递给应用程序?

    我已经为我的应用程序实现了 Apple 智能横幅 其中包含一个应用程序参数 其中包含我希望该应用程序在我的网站上打开的 URL 我以为用户安装应用程序时就会通过 但似乎没有 步骤 用户访问页面 未安装应用程序 单击 查看 转到应用程序商店
  • 如何删除查询中的第一个单词

    如何删除 MySQL 查询中字段的第一个单词 我尝试使用 SUBSTRING INDEX 但没有结果 该字段为varchar 可以同时包含字母和数字 例子 PWS 20110804 Pos 04应该成为20110804 Pos 04 PWS
  • 如何为特定控件创建自己的自定义提示?

    我需要为特定控件 而不是整个应用程序 创建一个自定义提示窗口 具有自己的颜色和布局 提示文本本身不会连接到该特定的Hint财产控制 按照建议 我编写了一个处理程序CM HINTSHOW 如果控件有此功能 则此方法有效ShowHint Tru
  • 找出与 Elastic Beanstalk 应用程序关联的 EC2 实例?

    有没有办法从仪表板找出与我的 Elastic Beanstalk 应用程序关联的 EC2 实例 我检查了 配置 下的每个页面 但找不到有关运行该应用程序的 EC2 实例的任何信息 您无法通过 Elastic Beanstalk 仪表板查看关
  • C++ 一个带有结构数组的类,不知道我需要多大的数组

    我有一个带有字段的类like名字 年龄 学校等 我需要能够存储其他信息 例如他们旅行过的地方以及旅行的年份 我无法专门声明另一个类来保存 TravelDestination 和年份 所以我认为有一个结构体可能是最好的 这只是一个例子 str
  • Java Scanner - 将换行符读取到字符串中?

    我有一个扫描仪 它接受用户输入 直到按 ctrl d 然后是一个 while 循环 将每个单词添加到字符串中 然后打印它 但我想知道如何在字符串中包含像 n 这样的新行指示符凡是有新行的地方 Scanner sc new Scanner S
  • Node.js async.forEach:无法读取未定义的属性“值”

    我有一种感觉 我犯了一个明显的错误 但找不到它 我得到的错误是 node modules async lib async js 194 iterator x value function err v TypeError Cannot rea
  • 如何在 Rust 中强制恢复被阻止读取文件的线程?

    因为 Rust 没有以非阻塞方式读取文件的内置功能 所以我必须生成一个读取文件的线程 dev input fs0为了获得操纵杆事件 假设操纵杆未使用 没有任何内容可读取 因此读取线程在读取文件时被阻塞 有没有办法让主线程强制恢复读取线程的阻
  • 监听 Flutter 中设备方向的变化

    我正在寻找一种监听手机方向变化的方法 目的是在手机横向时隐藏某些内容 我的布局目前仅按预期以纵向显示 但我希望我的应用程序在设备旋转到横向时执行某些操作 同时保持纵向布局 我尝试过使用OrientationBuilder 但这仅在布局更改为
  • Java 应用程序服务器性能

    我有一个在 Sun Application Server 8 1 又名 SJSAS Glassfish 的前身 上运行的有点过时的 Java EE 应用程序 当有 500 多个并发用户时 应用程序变得慢得令人无法接受 我正在尝试帮助确定大部