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服務器配置沒有設置爲逐一模式?
有人可以考慮在其他方向改善嗎?
有人可以推薦一些方法來找到瓶頸嗎?
謝謝!