- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我刚开始玩 Grinder(喜欢它!)但遇到了一些奇怪的行为,如下所示:
我一直在使用 5 个工作人员来解析推文文本并将它们发送到我正在进行负载测试的 URL。 Grinder 工作顺利,但我注意到 Python urlencode 在一些 unicode 或拉丁编码的东西上失败(即一些线程因此过早死亡)。
我想,由于 Jython 的底层实际上是 Java,我会尝试对可疑字符串使用 java.net.URLEncoder 并查看它的行为方式。
所以在我的 Jython 脚本的顶部我添加了
from java.net import URLEncoder
并将 python urlencode 包装在一个 try/catch 中,它返回到 UrlEncoder.encode(myString,'UTF-8')
当我用一名 worker 对其进行测试时,它似乎完美无缺地工作。但是一旦我将 worker 的数量增加到 2 或 3 以上,worker 就会启动,但随后无法与控制台通信,在不合理的长时间加载后抛出以下错误:
2012-11-15 15:59:04,287 ERROR worker-bootstrap: Error running worker process
net.grinder.communication.CommunicationException: Exception whilst sending message
at net.grinder.communication.AbstractSender.send(AbstractSender.java:57) ~[grinder-core-3.11.jar:na]
at net.grinder.communication.QueuedSenderDecorator.flush(QueuedSenderDecorator.java:60) ~[grinder-core-3.11.jar:na]
at net.grinder.engine.process.GrinderProcess.sendStatusMessage(GrinderProcess.java:638) ~[grinder-core-3.11.jar:na]
at net.grinder.engine.process.GrinderProcess.run(GrinderProcess.java:430) ~[grinder-core-3.11.jar:na]
at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:86) [grinder-core-3.11.jar:na]
at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:59) [grinder-core-3.11.jar:na]
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.6.0_37]
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) ~[na:1.6.0_37]
at java.net.SocketOutputStream.write(SocketOutputStream.java:136) ~[na:1.6.0_37]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) ~[na:1.6.0_37]
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) ~[na:1.6.0_37]
at java.io.ObjectOutputStream$BlockDataOutputStream.flush(ObjectOutputStream.java:1793) ~[na:1.6.0_37]
at java.io.ObjectOutputStream.flush(ObjectOutputStream.java:699) ~[na:1.6.0_37]
at net.grinder.communication.AbstractSender.writeMessageToStream(AbstractSender.java:90) ~[grinder-core-3.11.jar:na]
at net.grinder.communication.StreamSender.writeMessage(StreamSender.java:70) ~[grinder-core-3.11.jar:na]
at net.grinder.communication.AbstractSender.send(AbstractSender.java:53) ~[grinder-core-3.11.jar:na]
... 5 common frames omitted
这对我来说基本上像是超时(管道损坏,这意味着我猜是控制台厌倦了聆听,或者代理厌倦了尝试连接)。但我不确定为什么。 (我也不确定在异常中看到“while”这个词是什么感觉。Strewth,Hacker!你没看到吗险恶的内存泄漏? )
至于手头的代码问题,我可以比 Python urlencode 的(当前实现的)默认行为做得更好——我确实知道一些改进的技巧,但它们往往会变得困惑,我有点猜测其中一些无法在 Jython 中工作。
但我对这里的总体水平感到好奇。 Java URLEncode 在 3 个或更少的工作人员上工作得很好——那么为什么在工作人员更多的情况下它会失败呢?
猜测:
我的系统资源用完了吗?
恐怖 - 是否每个工作人员都在创建其自己的 JVM?
好吧,检查了一下,是的,事实证明是这样。但这并没有停止以前的事情。为什么现在?我的 Mac 中有 2 个处理器 - 我会认为如果这是问题所在,我们应该在 3 个 worker 时失败,但是,不。 4 或 5,是的。
出于某种原因,在 Jython 中使用 native Java 库不是一个好主意吗?
欣赏见解。
谢谢JB
最佳答案
我不确定这是否适用于您的情况,但请尝试像这样运行研磨机代理。
java net.grinder.Grinder -daemon 2
该命令的作用是,当研磨机无法连接到控制台或由于某种原因连接丢失时,它会 hibernate 一段时间并运行并尝试重新连接。我预感这可能会解决您的问题。
这方面的文档非常少,但这是我从哪里得到的。
关于java - Grinder 代理无法与多个工作人员的控制台通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406345/
是否有用于手动测试的代码覆盖工具?比如我新写了30行代码,编译,然后运行,有什么办法可以快速验证这30行都运行了吗? 另外,后来,在我将代码 checkin 正式版本后,有什么方法可以验证测试部门在进
老实说,这是一个家庭作业问题,但我已经浪费了好几个小时,而且无法正确解决。它返回错误数量的结果或错误的数据: 我需要选择参与指导电影和/或在电影中表演的每个人以及他们所做的次数,如果至少 5 次。 有
我正在尝试测试 MacOS 的应用内购买。输入测试用户凭据后,App Store 提示:“当前收据无效或 ds 人员 ID 不匹配。”并且购买失败。 最佳答案 我尝试了很多方法来解决这个问题。 Get
我正在为 Jenkins 使用 ActiveDirectory 插件,因此用户必须使用他们的凭据登录到 Jenkins。然后用户在 Jenkins 中被称为 joe.doe,这很完美。 当同一个人 c
如何从 Infopath 人员/组选取器检索电子邮件地址?当我将人员/组选取器添加到 infopath 表单时,我只得到 3 个字段 DisplayName、AccountId、AccountType
在 Snow Leopard 中,可以在 iCal 事件中显示空闲/忙碌时间。我搜索了 CalStore.framework 的 header ,但找不到任何描述该字段的属性。如何检索日历事件的忙/闲
是否有人成功地从专门针对 SharePoint 2013 的新建或编辑表单中获取用户(个人或组)字段的值? 我已经尝试了通过搜索互联网找到的所有解决方案以及我自己能想到的所有解决方案,所有结果都为空白
所以我需要将一个 Twitter 帐户添加到 ABRecordRef 中。然而,最快的方法似乎是获取社交资料属性的多值引用,创建它的可变版本,查找它是否有 Twitter 条目,如果已经有,则创建
我正在尝试将使用 Tomcat(最初是 5.5,但可以与 7 一起使用)在 MyEclipse 中开发的应用程序部署到我们的演示服务器 (Sun Java Web Server 7)。不幸的是,所有设
我是一名优秀的程序员,十分优秀!