Skip to content

Instantly share code, notes, and snippets.

@zhanhai
Last active March 2, 2016 09:28
Show Gist options
  • Save zhanhai/d5085c60790b7aa3b0d6 to your computer and use it in GitHub Desktop.
Save zhanhai/d5085c60790b7aa3b0d6 to your computer and use it in GitHub Desktop.
如何查看java线程运行情况

JAVA应用允许创建的最大线程个数缺省是400+线程,以保证整个系统的稳定。目前应用服务的线程主要包括以下几类:

  • tomcat请求处理线程
  • dubbo处理线程
  • 其他创建线程

我们需要控制java线程个数,否则应用会占用过多系统资源。
通过修改配置,可以控制应用的线程个数。具体方法如下:

  • tomcat, 修改cconf/server.xml,增加属性: maxThreads="100", 比如:
<Connector port="12011" protocol="HTTP/1.1"   maxThreads="100"    connectionTimeout="20000"     redirectPort="8443" />  
  • dubbo,修改dubbo协议的配置参数,比如:
<dubbo:protocol name="dubbo" port="13011" dispatcher="all" threadpool="fixed" threads="50"/>

另:以下是查看线程信息的一些命名,供参考

  • 显示某个进程(PID)的所有线程运行情况
top -H -p $PID
  • 每隔5秒显示某个进程(PID)下的特定线程(TID)的堆栈信息
watch -n 5 jstack $PID | awk '/ nid='"$(printf '%#x' $TID)"' /,/^$/'
  • 每隔10秒显示某个应用(APP)的线程总数
while true; do echo $APP `ps -eLF |grep $APP  | grep apps |wc -l; date;`; sleep 10; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment