【问题标题】:How to measure latency which appears when threads are awaiting for db connection?如何测量线程等待数据库连接时出现的延迟?
【发布时间】:2017-04-08 08:09:37
【问题描述】:
假设我有 10 个守护线程的 java 应用程序。
假设我有最多 3 个连接的连接池(例如 c3p0)。
每个线程都在使用数据库。当一个线程正在等待处于 BLOCKED 状态的连接时,它可能会发生(当然它确实会发生)。
当它们每个都处于等待连接的阻塞状态时,我需要测量总线程延迟。
最好的方法是什么?
【问题讨论】:
标签:
java
multithreading
database-connection
connection-pooling
【解决方案1】:
使用您自己的实现扩展线程并覆盖方法“notify”,以便将“system.currentTimeMilis”保存在某种缓存中 - 您可以调用带有毫秒参数的方法来处理每个线程的 notifyTimes。
然后在您的扩展线程中覆盖运行/启动方法并再次获取 currentTimeMilis。
获取 wait 方法的 currentTime (再次覆盖,不要忘记在覆盖中调用 super 方法)。
使用这 3 种类型的线程时间,您应该能够进行基准测试。