Differentiate between interactive reports and periodically generated reports.
Only reset our accumulating counters for the periodic reports. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4219 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -712,7 +712,8 @@ public class PresentsDObjectMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// documentation inherited from interface PresentsServer.Reporter
|
// documentation inherited from interface PresentsServer.Reporter
|
||||||
public void appendReport (StringBuilder report, long now, long sinceLast)
|
public void appendReport (
|
||||||
|
StringBuilder report, long now, long sinceLast, boolean reset)
|
||||||
{
|
{
|
||||||
report.append("* presents.PresentsDObjectMgr:\n");
|
report.append("* presents.PresentsDObjectMgr:\n");
|
||||||
int queueSize = _evqueue.size();
|
int queueSize = _evqueue.size();
|
||||||
@@ -733,9 +734,11 @@ public class PresentsDObjectMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// roll over stats
|
// roll over stats
|
||||||
_recent = _current;
|
if (reset) {
|
||||||
_current = new Stats();
|
_recent = _current;
|
||||||
_current.maxQueueSize = queueSize;
|
_current = new Stats();
|
||||||
|
_current.maxQueueSize = queueSize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -58,7 +58,8 @@ public class PresentsInvoker extends Invoker
|
|||||||
}
|
}
|
||||||
|
|
||||||
// documentation inherited from interface
|
// documentation inherited from interface
|
||||||
public void appendReport (StringBuilder buf, long now, long sinceLast)
|
public void appendReport (
|
||||||
|
StringBuilder buf, long now, long sinceLast, boolean reset)
|
||||||
{
|
{
|
||||||
buf.append("* presents.util.Invoker:\n");
|
buf.append("* presents.util.Invoker:\n");
|
||||||
int qsize = _queue.size();
|
int qsize = _queue.size();
|
||||||
@@ -66,13 +67,15 @@ public class PresentsInvoker extends Invoker
|
|||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
buf.append("- Max queue size: ").append(_maxQueueSize).append("\n");
|
buf.append("- Max queue size: ").append(_maxQueueSize).append("\n");
|
||||||
buf.append("- Units executed: ").append(_unitsRun).append("\n");
|
buf.append("- Units executed: ").append(_unitsRun).append("\n");
|
||||||
_maxQueueSize = qsize;
|
|
||||||
_unitsRun = 0;
|
|
||||||
if (_currentUnit != null) {
|
if (_currentUnit != null) {
|
||||||
String uname = StringUtil.safeToString(_currentUnit);
|
String uname = StringUtil.safeToString(_currentUnit);
|
||||||
buf.append("- Current unit: ").append(uname).append(" ");
|
buf.append("- Current unit: ").append(uname).append(" ");
|
||||||
buf.append(now-_currentUnitStart).append("ms\n");
|
buf.append(now-_currentUnitStart).append("ms\n");
|
||||||
}
|
}
|
||||||
|
if (reset) {
|
||||||
|
_maxQueueSize = qsize;
|
||||||
|
_unitsRun = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PresentsDObjectMgr.UNIT_PROF_ENABLED) {
|
if (PresentsDObjectMgr.UNIT_PROF_ENABLED) {
|
||||||
@@ -83,7 +86,9 @@ public class PresentsInvoker extends Invoker
|
|||||||
}
|
}
|
||||||
buf.append(" ").append(key).append(" ");
|
buf.append(" ").append(key).append(" ");
|
||||||
buf.append(profile).append("\n");
|
buf.append(profile).append("\n");
|
||||||
profile.clear();
|
if (reset) {
|
||||||
|
profile.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,9 +61,11 @@ public class PresentsServer
|
|||||||
* epoch millis.
|
* epoch millis.
|
||||||
* @param sinceLast number of milliseconds since the last time we
|
* @param sinceLast number of milliseconds since the last time we
|
||||||
* generated a report.
|
* generated a report.
|
||||||
|
* @param reset if true, all accumulating stats should be reset, if
|
||||||
|
* false they should be allowed to continue to accumulate.
|
||||||
*/
|
*/
|
||||||
public void appendReport (
|
public void appendReport (
|
||||||
StringBuilder buffer, long now, long sinceLast);
|
StringBuilder buffer, long now, long sinceLast, boolean reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Implementers of this interface will be notified when the server is
|
/** Implementers of this interface will be notified when the server is
|
||||||
@@ -135,7 +137,7 @@ public class PresentsServer
|
|||||||
// queue up an interval which will generate reports
|
// queue up an interval which will generate reports
|
||||||
new Interval(omgr) {
|
new Interval(omgr) {
|
||||||
public void expired () {
|
public void expired () {
|
||||||
logReport(generateReport(System.currentTimeMillis()));
|
logReport(generateReport(System.currentTimeMillis(), true));
|
||||||
}
|
}
|
||||||
}.schedule(REPORT_INTERVAL, true);
|
}.schedule(REPORT_INTERVAL, true);
|
||||||
}
|
}
|
||||||
@@ -203,7 +205,7 @@ public class PresentsServer
|
|||||||
|
|
||||||
case SignalManager.SIGUSR1:
|
case SignalManager.SIGUSR1:
|
||||||
// generate a system status report
|
// generate a system status report
|
||||||
Log.info(generateReport(System.currentTimeMillis()));
|
Log.info(generateReport(System.currentTimeMillis(), false));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -227,7 +229,7 @@ public class PresentsServer
|
|||||||
/**
|
/**
|
||||||
* Generates and logs a "state of server" report.
|
* Generates and logs a "state of server" report.
|
||||||
*/
|
*/
|
||||||
protected String generateReport (long now)
|
protected String generateReport (long now, boolean reset)
|
||||||
{
|
{
|
||||||
long sinceLast = now - _lastReportStamp;
|
long sinceLast = now - _lastReportStamp;
|
||||||
long uptime = now - _serverStartTime;
|
long uptime = now - _serverStartTime;
|
||||||
@@ -249,7 +251,7 @@ public class PresentsServer
|
|||||||
for (int ii = 0; ii < _reporters.size(); ii++) {
|
for (int ii = 0; ii < _reporters.size(); ii++) {
|
||||||
Reporter rptr = (Reporter)_reporters.get(ii);
|
Reporter rptr = (Reporter)_reporters.get(ii);
|
||||||
try {
|
try {
|
||||||
rptr.appendReport(report, now, sinceLast);
|
rptr.appendReport(report, now, sinceLast, reset);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
Log.warning("Reporter choked [rptr=" + rptr + "].");
|
Log.warning("Reporter choked [rptr=" + rptr + "].");
|
||||||
Log.logStackTrace(t);
|
Log.logStackTrace(t);
|
||||||
@@ -272,7 +274,11 @@ public class PresentsServer
|
|||||||
report.delete(blen-1, blen);
|
report.delete(blen-1, blen);
|
||||||
}
|
}
|
||||||
|
|
||||||
_lastReportStamp = now;
|
// only reset the last report time if this is a periodic report
|
||||||
|
if (reset) {
|
||||||
|
_lastReportStamp = now;
|
||||||
|
}
|
||||||
|
|
||||||
return report.toString();
|
return report.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user