提交 e707ef73 编写于 作者: F Frankie Wu

add threadDump on home page

上级 9803a2db
......@@ -69,8 +69,8 @@ public class TcpSocketReceiver implements MessageReceiver, LogEnabled {
m_queue = new LinkedBlockingQueue<ChannelBuffer>();
ExecutorService bossExecutor = Threads.forPool().getFixedThreadPool("TcpSocketReceiver-Boss", 20);
ExecutorService workerExecutor = Threads.forPool().getFixedThreadPool("TcpSocketReceiver-Worker", 20);
ExecutorService bossExecutor = Threads.forPool().getCachedThreadPool("TcpSocketReceiver-Boss");
ExecutorService workerExecutor = Threads.forPool().getCachedThreadPool("TcpSocketReceiver-Worker");
ChannelFactory factory = new NioServerSocketChannelFactory(bossExecutor, workerExecutor);
ServerBootstrap bootstrap = new ServerBootstrap(factory);
......
......@@ -3,7 +3,9 @@ package com.dianping.cat.report.page.home;
public enum Action implements com.site.web.mvc.Action {
VIEW("view"),
CHECKPOINT("checkpoint");
CHECKPOINT("checkpoint"),
THREAD_DUMP("threadDump");
private String m_name;
......
package com.dianping.cat.report.page.home;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import javax.servlet.ServletException;
......@@ -37,11 +40,37 @@ public class Handler implements PageHandler<Context> {
Model model = new Model(ctx);
Payload payload = ctx.getPayload();
model.setAction(Action.VIEW);
model.setAction(payload.getAction());
model.setPage(ReportPage.HOME);
model.setDomain(payload.getDomain());
model.setLongDate(payload.getDate());
switch (payload.getAction()) {
case THREAD_DUMP:
showThreadDump(model, payload);
break;
case VIEW:
break;
}
m_jspViewer.view(ctx, model);
}
private void showThreadDump(Model model, Payload payload) {
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
ThreadInfo[] threads = bean.dumpAllThreads(true, true);
StringBuilder sb = new StringBuilder(8096);
int index = 1;
sb.append("Threads: ").append(threads.length);
sb.append("<pre>");
for (ThreadInfo thread: threads) {
sb.append(index++).append(": ").append(thread).append("\r\n");
}
sb.append("</pre>");
model.setContent(sb.toString());
}
}
......@@ -10,6 +10,7 @@ public class JspViewer extends BaseJspViewer<ReportPage, Action, Context, Model>
switch (action) {
case VIEW:
case THREAD_DUMP:
return JspFile.VIEW.getPath();
}
......
......@@ -8,10 +8,16 @@ import com.dianping.cat.report.page.AbstractReportModel;
public class Model extends AbstractReportModel<Action, Context> {
private String m_domain;
private String m_content;
public Model(Context ctx) {
super(ctx);
}
public String getContent() {
return m_content;
}
@Override
public Action getDefaultAction() {
return Action.VIEW;
......@@ -27,6 +33,10 @@ public class Model extends AbstractReportModel<Action, Context> {
return Collections.emptySet();
}
public void setContent(String content) {
m_content = content;
}
public void setDomain(String domain) {
m_domain = domain;
}
......
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="a" uri="/WEB-INF/app.tld"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="res" uri="http://www.unidal.org/webres"%>
<jsp:useBean id="ctx" type="com.dianping.cat.report.page.home.Context" scope="request"/>
<jsp:useBean id="payload" type="com.dianping.cat.report.page.home.Payload" scope="request"/>
......@@ -7,6 +8,11 @@
<a:body>
<c:choose>
<c:when test="${not empty model.content}">
${model.content}
</c:when>
<c:otherwise>
Welcome to <b>Central Application Tracking (CAT)</b>.
<br>
<br>
......@@ -19,5 +25,7 @@ Welcome to <b>Central Application Tracking (CAT)</b>.
<br>
<br>
<a href="?op=checkpoint&domain=${model.domain}&date=${model.date}" style="color:#FFF">Do checkpoint here</a>
</c:otherwise>
</c:choose>
</a:body>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册