竹笋

注册

 

发新话题 回复该主题

JVM实战调优空格引发的服务异常 [复制链接]

1#
北京有哪些治疗白癜风的医院 http://pf.39.net/bdfyy/bjzkbdfyy/

JVM实战调优

问题描述

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

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

调优过程

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

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

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

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

分享 转发
TOP
发新话题 回复该主题