- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:正如 Preston 所指出的,以下问题很可能与对象的(反)序列化有关。关于如何优化这个的任何想法?
我目前正在修复旧 JavaEE 应用程序中的一些问题。它使用 EJB 模块和应用程序客户端模块。 EJB 处理所有数据库查询。对于此示例,考虑一个方法 getEnterprises(int year)
,它返回给定年份的“Enterprise”实体。目前,大约有 2500 个条目。
注意:我使用“企业”一词仅用于说明目的。真正的实体类对这里的大多数人来说可能没有多大意义;)
现在,我们假设这个例子中的企业实体只有两个字段:code
和 name
。远程 bean 中的方法如下所示:
public List<Enterprise> getEnterprises(int year){
return em.createQuery("SELECT e FROM Enterprise e WHERE e.year=:year")
.setParameter("year", year)
.getResultList();
}
在应用客户端中,有这样一行:
List<Enterprise> result = requestBean.getEnterprises(1996);
这对我来说似乎是正确的。对我来说奇怪的是,客户端的调用大约需要 15 秒才能完成!所以我添加了一些日志记录:
public List<Enterprise> getEnterprises(int year){
logger.finest("Begin fetch on remote");
List<Enterprise> output = em.createQuery("SELECT e FROM Enterprise e WHERE e.year=:year")
.setParameter("year", year)
.getResultList();
logger.finest("End fetch on remote");
return output;
}
和...
logger.finest("Begin fetch on client");
List<Enterprise> result = requestBean.getEnterprises(1996);
logger.finest("End fetch on client");
根据生成的时间戳,我意识到服务器上的调用在不到一秒内完成,而在客户端上则需要 15 秒以上。
手写跟踪示例:
2011-01-04 12:00 | FINEST | Begin fetch on client
2011-01-04 12:00 | FINEST | Begin fetch on remote
2011-01-04 12:01 | FINEST | End fetch on remote
2011-01-04 12:17 | FINEST | End fetch on client
所以我猜测问题出在客户端/服务器通信上。注意,对于上面的例子,我没有检查是客户端->服务器通信慢还是服务器->客户端通信慢。我意识到,服务器日志显示“预期的”执行时间,而在客户端上却很缓慢。换句话说,它也可能是这样的:
2011-01-04 12:00 | FINEST | Begin fetch on client
2011-01-04 12:15 | FINEST | Begin fetch on remote
2011-01-04 12:16 | FINEST | End fetch on remote
2011-01-04 12:17 | FINEST | End fetch on client
甚至:
2011-01-04 12:00 | FINEST | Begin fetch on client
2011-01-04 12:07 | FINEST | Begin fetch on remote
2011-01-04 12:08 | FINEST | End fetch on remote
2011-01-04 12:17 | FINEST | End fetch on client
我还没有深入研究它。
由于我对 JavaEE 的经验不多,所以我有点迷失在丛林中。有太多的设置、组件,我必须仔细查看,但我不知道从哪里开始。它可以是服务器设置吗? bean 本身有问题?我如何称呼 bean ?我不知道……
...哦...它在 glassfish 上运行,并在 localhost
上进行测试。所以网络本身不是问题...
最佳答案
对于像这样与网络相关的任何事情,我的第一个停靠点是计算出时间实际的去向:Wireshark是你的 friend 。尝试将日志语句映射到网络流量。如果服务器记录完成与数据在网络上传送之间存在巨大延迟,那么您应该进一步查看服务器端配置等。如果数据已传送到客户端,但该方法需要很长时间调用完成,看客户端。如果数据在这 15 秒内在服务器和客户端之间缓慢传输,那可能完全是另外一回事(您可能需要同时查看双方)。
为了更容易诊断,您可能希望在不同的机器上运行服务器和客户端 - 如果您知道它必须通过物理接口(interface),它可以使网络跟踪更容易。
关于java - Application Client <-> EJB calls round-trip 似乎很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4592976/
为了使我的网络应用程序更可用,我想在应用程序中使用一些分步用户指南,以便用户知道点击什么、何时何地来实现其目标。 所以,经过大量研究,我想出了 trip.js ,它是可设计的并且几乎可定制。但是!当尝
我正在尝试推迟或异步加载 Trip Advisor 小部件,但由于某种原因它不起作用。 我认为异步或延迟可能不起作用,因为 Trip Advisor 脚本随后执行 document.write 命令。
我试图在我的网站中嵌入一个旅行顾问小部件。 Trip Advisor 小部件的代码如下。 但它不起作用,因为它在 chrome 控制台窗口中显示以下错误。 一个阻止解析器的跨站点(即不
我为 this competitive programming problem 写了一个解决方案.它通过了所有测试用例,除了最后一个测试用例差了一个,我不明白为什么。问题可以这样表述:给定一个群体中每
我正在尝试使用 Open Trip Planner 部署解决方案,如果使用 HTTP,一切正常,但显然 HTTPS 连接不起作用。我已遵循官方文档,但没有成功,显然内部服务器正在运行,它记录了预期的
我想知道如何从 Trip Advisor Api 获取特定地点的所有评论。现在我的电话是 http://api.tripadvisor.com/api/partner/2.0/location/SOM
我正在实现此 REST URL 来获取数据 http://api.tripadvisor.com/api/partner/2.0/map/28.5441005,77.2132106?key=
当尝试使用 boost::serialization 序列化派生类时,boost/archive/detail/oserializer.hpp 中的断言(Boost 1.53.0 中的第 436 行)
在我的 Rails 项目中,我有一个功能可以向用户显示他们的 Facebook 好友是否已经在该网站上。验证后,我将他们的 facebook 好友加载到@fb_friends,然后执行此操作: @
假设我这样做: NSManagedObjectContext *context = #a managed object context"; NSString *entityName = #an ent
我有通过 ODBC 访问 MySQL 的 C# 代码。 它创建一个事务,执行几千个插入命令,然后提交。现在我的问题是有多少“往返”,可以这么说,发生在数据库服务器上?我的意思是,它只是将每个插入命令传
我有通过 ODBC 访问 MySQL 的 C# 代码。 它创建一个事务,执行几千个插入命令,然后提交。现在我的问题是有多少“往返”,可以这么说,发生在数据库服务器上?我的意思是,它只是将每个插入命令传
ruamel.yaml 根据它使用的是 safe 还是 round-trip 代表,以不同方式格式化一个简单但嵌套的字典。 我不明白为什么不同的代表应该以不同的方式格式化这样一个简单的字典,所以我想知
在这里找到: http://docs.angularjs.org/guide/introduction 它指出“您可以使用 Angular 开发单页和往返应用程序,但 Angular 主要是为开发单页
更新:正如 Preston 所指出的,以下问题很可能与对象的(反)序列化有关。关于如何优化这个的任何想法? 我目前正在修复旧 JavaEE 应用程序中的一些问题。它使用 EJB 模块和应用程序客户端模
情况 我有很多参数化的 SQL 命令。我在循环中一个接一个地执行这些命令,如下所示: public void SaveChanges() { using (var ts = _Context.
我正在尝试编写一个 Python 脚本来使用 Open Trip Planner (OTP) 构建一个起始目的地矩阵但我对 Python 和 OTP 还很陌生。 我正在尝试使用OTP scriptin
我正在服务器端生成 HTML 标签 (asp.net mvc4)。 我想预先设置 HIDDEN 字段的值和描述,避免使用 ajax 调用来获取 initSelection 函数中的数据。 我见过有人使
SQL 大师,我在练习 SQL 技能时试图解决这个具有挑战性的问题,但是我被卡住了,如果有人能提供帮助,我将不胜感激。 注册被定义为事件表中标记为“sign_up_success”的事件。对于每个城市
我们正在使用 Ruby on Rails 3.2 开发社交网络原型(prototype)。该系统是为旅行者打造的,因此每个用户必然有很多次旅行。我们创建了旅行模型,并分别在旅行模型和用户模型中设置了与
我是一名优秀的程序员,十分优秀!