小编use*_*361的帖子

JVM分钟长GC

如下所示,在一切按预期工作的过程中,世界各地的GC操作耗时+60秒.它可以被确定为一直停止世界,因为(兵马俑)客户掉线,抱怨它(兵马俑服务器)在那段时间没有响应.

这是年轻/次要GC吗?如果是的话,是不是因为年轻一代的饥饿(伊甸园+幸存者?).

只有109333(KB)免费?

我将开始绘制不同的内存容器,任何其他建议可以做些什么来进一步诊断这些问题?

date, startMem=24589884, endMem=24478495, reclaimed=111389, timeTaken=0.211244 (1172274.139: [GC 24589884K->24478495K(29343104K), 0.2112440 secs])
date, startMem=24614815, endMem=24505482, reclaimed=109333, timeTaken=61.301987 (1172276.518: [GC 24614815K->24505482K(29343104K), 61.3019860 secs])
date, startMem=24641802, endMem=24529546, reclaimed=112256, timeTaken=2.68437 (1172348.921: [GC 24641802K->24529546K(29343104K), 2.6843700 secs])
Run Code Online (Sandbox Code Playgroud)

Sun JVM是1.6,使用以下配置:

-Xms28672m -Xmx28672m -XX:+ UseConcMarkSweepGC -XX:+ PrintGCTimeStamps -XX:+ PrintGC

Sane配置调整以进一步调试GC:

'-XX:+PrintGCDateStamps' Print date stamps instead of relative timestamps
'-XX:+PrintGCDetails' Will show what cpu went for (user, kern), gc algorithm used 
'-XX:+PrintHeapAtGC' will show all of the heaps memory containers and their usage
'-Xloggc:/path/to/dedicated.log' log to …
Run Code Online (Sandbox Code Playgroud)

garbage-collection jvm terracotta

6
推荐指数
1
解决办法
1030
查看次数

SocketServer ThreadingMix中server_thread的用途

在异步(线程)SocketServer http://docs.python.org/2/library/socketserver.html的示例中,启动服务器线程(称为 server_thread),为每个请求启动新线程。由于捕获键盘中断时出现一些问题,我开始寻找类似的代码,发现不使用服务器线程时没有明显的区别,但 ctrl-c 实际上有效。

尽管我的代码有效,但我很想知道

1)为什么在使用 server_thread 时,简单的“尝试”捕获 KeyboardInterrupt 不起作用?

2)与我的稍微简单的示例相比,示例中的 server_thread 有什么好处?

从python SocketServer示例来看,在try中捕获键盘中断不起作用:

if __name__ == "__main__":
    server = ThreadedTCPServer(serverAddr, SomeCode)
<snip>
    # Start a thread with the server -- that thread will then start one
    # more thread for each request
    server_thread = threading.Thread(target=server.serve_forever)
    server_thread.start()
Run Code Online (Sandbox Code Playgroud)

我的更简单的例子是 ctrl-c 有效。

if __name__ == "__main__":
    server = ThreadedTCPServer(serverAddr, SomeCode)
    try:
        server.serve_forever()
        print "ctrl-c to exit"
    except KeyboardInterrupt:
        print  "interrupt received, exiting"
        server.shutdown() 
Run Code Online (Sandbox Code Playgroud)

python socketserver python-2.7

5
推荐指数
1
解决办法
2966
查看次数