0
我有一个涉及从多个设备(千次)记录数据的项目 - 设备每X秒发送一次需要记录的数据。快速多次在不同线程的SQL服务器上插入
设备向应用服务器(Apache TomEE)发送HTTP GET请求,服务器解析请求并将其存储到SQL Server数据库。
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请求 - 我想让它变得更快。 我想到了一些方向:
- 插入多个记录在一个事务中能够提高性能,但我怎么可以插入多个记录更在一个单一的交易? (它们都来自不同的HTTP请求)
- 也许不同配置的SQL服务器可以提升性能?
- 也许SQL服务器机器需要更多的CPU /内存 - 我怎么知道这是不是bottelneck?
- 从业务逻辑的角度来看,事务可以写成并列 - 我如何验证te服务器配置没有设置为逐一模式?
有人可以考虑在其他方向改善吗?
有人可以推荐一些方法来找到瓶颈吗?
谢谢!