我正在为使用Spring、Hibernate和mysql-java-connector的应用程序进行性能分析。VisualVM显示:当有1000个并行连接在读取时,超过50%的CPU时间都花费在
是否有任何优化措施可以加快速度?
com.myql.jdbc.utils.ReadAheadInputStream.fill()
方法中。是否有任何优化措施可以加快速度?
com.myql.jdbc.utils.ReadAheadInputStream.fill()
方法中。com.myql.jdbc.utils.ReadAheadInputStream.fill()
中大量CPU使用率的来源。因此,您不是面临一个CPU问题,而是I/O问题。没有更多的信息,很难回答你的问题。以下是需要满足的一些信息。
fill()
方法使用了系统可用CPU时间的一半,这似乎很奇怪。但如果这个数字是使用VisualVM获取的,它报告相对于应用程序中花费的时间的使用时间,那么你的应用程序的其余部分可能没有做重要的工作吗?pidstat
、mpstat
和sar
进行交叉检查。我曾经看到VisualVM将在SocketInputStream.socketRead0()
方法中花费的时间标记为CPU时间,但这并未得到pidstat
的确认。我猜测这是VisualVM本身或JVM行为中某些测量近似的结果。因此,使用操作系统工具进行交叉检查总是一个好主意。