我有一个涉及记录来自多个设备(数千个)的数据的项目 - 设备每隔X秒发送一次需要记录的数据。
设备将HTTP GET请求发送到应用服务器(Apache TomEE),服务器解析请求并将其存储到SQL Server DB。
TomEE服务器被复制3次,并且是一个负载均衡器,用于在它们之间循环请求。
我使用OpenJPA来存储记录,这种方式(em
保存需要存储的记录):
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
u = execute(em);
tx.commit();
} catch (SQLException | RuntimeException e) {
u = handleError(e);
if (tx.isActive())
tx.rollback();
} finally {
em.close();
}
当我使用JMeter测试性能时,我发现这个架构每秒处理大约200个请求 - 我想让它更快。 我想到了一些方向:
有人可以考虑在其他方向上改善这一点吗?
有人可以推荐找到瓶颈的方法吗?
谢谢!
答案 0 :(得分:0)
最好的方法是: 1)监视数据库并查看其负载(它是有限的,中间可以扩展而不是数据库)。 2)在服务器上使用jstack或kill -3获取一些线程堆栈,看看会发生什么。如果还不够,一些分析可以提供帮助,但我怀疑它在这里是否有用