JVM实战调优空格引发的服务异常

我国临床著名白癜风专家 http://pf.39.net/bdflx/140113/4325801.html

JVM实战调优

问题描述

某一个项目中有一个文字转语音的服务,使用的是科大讯飞的语音转换服务,需要调用三方服务。因其转换服务是一个耗时操作,官方给的demo使用的是WebSocket进行数据转换操作。项目中使用线程池进行调用。同时科大讯飞的语音合成有长度限制,官方给出的在[字节,约个汉字],所以需要分段合成。

在某一天,客户反应语音无法播放,经过查看服务日志排查,是因为购买的服务到期了,客户重新购买了其余的服务,参数发生了改变,以前的参数无法使用。更改了参数之后,更新部署之后,服务恢复正常。又过了几天,客户反应语音又无法播放了,经过查看日志,发现大部分是成功的,部分发生了失败。

调优过程

查看日志的时候,发现部分失败的原因是connectionfail,通过jps找到对应的应用程序进程号。

然后通过top-HpPID查看了一个CPU和内存的占用率,都是正常的占用。

因其使用了线程池,怀疑是线程池占满了,用就stackpid查看线程池之后,发现满了。

OkHttpConnectionPool#48daemonprio=5os_prio=0tid=0xf8dnid=0x2a7ainObject.wait()[0xf8dea5a]java.lang.Thread.State:TIMED_WAITING(onobjectmonitor)  atjava.lang.Object.wait(NativeMethod)  atjava.lang.Object.wait(Object.java:)  atok


转载请注明:http://www.jiaju1314.com/pxxx/pxxx/16354.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了