2016-09-06 78 views
10

我刚刚安装了SmartFoxServer。线程始终在增加

重新启动Sfs后,Dashboard中线程池中的线程数不断增加,并且在下次重新启动之前不会再次减少。如果我增加线程池限制,线程数会增加到该限制。

任何扩展或服务尚未运行,并且线程数在10分钟内增加到1232。所以这看起来不像是内存泄漏,因为不涉及扩展代码,只是简单的SmartFox。

我试过版本2.9,但结果没有改变。

什么可能会导致SFS线程到那种行为,甚至没有运行扩展?

+0

您有使用的代码吗? –

+0

@HorsSujet即使我不使用任何扩展,也会使用最少1040个线程。 –

回答

1

您有内存泄漏。

»内存泄漏

在Java中时,内存中的对象也不会释放 即使应用程序本身不再需要它们发生内存泄漏。一个常见的 示例是未从事件 源中删除的未使用的事件侦听器。

如果程序不断添加新的侦听器对象,但永远不会删除那些不再使用的对象,我们将最终导致内存浪费。 GC将无法重新获得此类内存,因为尚未引用 的侦听器。如果这些对象继续堆积起来 我们将看到一个渐进的性能下降,最终可能导致JVM崩溃。

内存泄漏并非总是非常明显,在发现之前潜伏在代码 中很长一段时间。在其他情况下,泄漏可能会非常迅速地变得非常恶劣,从而导致内存使用的主要高峰,并最终导致进程死亡。
来源http://docs2x.smartfoxserver.com/AdvancedTopics/troubleshooting-live-server#mem

+0

在这种情况下它不应该是'资源泄漏',还是'内存泄漏'足以涵盖这种情况? – Av4t4r

+0

我已经考虑过了,重新安装了SmartFox Server,但没有附加任何扩展名或swf。我甚至没有使用任何代码,但干净的SmartFox2安装带有1040个线程。 –

+0

您是否尝试更改config.xml? ' 5' –

0

一个良好的开端是尝试并确定所有的线程。您可以使用jstack(包含在JDK中)获取所有线程的堆栈转储,这些线程应该可以帮助您发现其目的,并希望如何减少它们的数量。

jstack -l JAVA_PID > jstack.out