我目前正试图通过
启动大量的硒过程ExecutorService executor = Executors.newFixedThreadPool(10);
我注意到性能问题。
我正在部署的代码我首先测试并保留一个运行该进程一次的TestModule的副本,并使用apache Stopwatch来监视运行单个线程所需的时间。
当我运行此代码时,我看到以下结果:
Stopwatch time: 00:00:11.043
这是从最初的driver.get(MY_WEBSITE_URL)到检查元素以及我希望完成的其他任务所花费的时间。
但是,如果我在代码中执行以下操作,结果会非常慢。
QueryAgent queryAgent = new QueryAgent();
queryAgent.startUp();
new Thread(queryAgent).start();
QueryAgent内部
private ExecutorService executor = Executors.newFixedThreadPool(10);
MyPojo pojo = MyPojoImpl.doStuff();
“doStuff()”中的所有代码与我的测试模块中的代码相同。如果我正在运行10个线程,每个线程应该花费不超过20秒的时间来处理。我希望能在一分钟内完成约30次运行〜一小时内完成1800次。
然而,看着我的日志,我在一分钟内收到的请求不超过5个。
EDIT1:
在查看下面的评论并做一个“顶部”后,看来我曾经遇到大约4个幻影实例 - 我的CPU达到了100%
但我的内存使用率低于1GB。此时,瓶颈似乎是CPU。有什么想法吗?