标签: garbage-collecting

为什么 Debian 使用 cron 作业清理 php 会话而不是使用 php 的内置垃圾收集器?

Debian 和衍生产品 (Ubuntu) 不使用 php 会话垃圾收集器

session.gc_probability = 0
Run Code Online (Sandbox Code Playgroud)

相反,他们使用 cron /etc/cron.d/php5

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
Run Code Online (Sandbox Code Playgroud)

为什么 Debian 选择这样做?

ubuntu php debian garbage-collecting

29
推荐指数
2
解决办法
3万
查看次数

Tomcat 间歇性减速、无响应、挂起

我一直在努力寻找 Tomcat 服务器间歇性变慢的原因。我们每周都会遇到几次减速,其中 Tomcat 将停止响应或需要几分钟来处理请求,并且 (Linux) 机器上的 cpu 负载,如正常运行时间所示,从通常的 1-2 左右飙升到 30 以上。然后事情会逐渐解决,大约 10 分钟后一切都会恢复正常。

我们使用 Apache 作为前端,使用 Postgres 作为我们的数据库。我一直在挖掘日志以尝试找出可能导致问题的原因。我没有注意到在经济放缓时期需求有任何明显增加。

我发现在很多情况下,就在减速之前,Tomcat 似乎只是进入睡眠状态大约三分半钟。在此期间,它的日志中没有任何条目,也没有从 Tomcat 到数据库的查询。小睡一会后,Tomcat 会醒来并开始疯狂地尝试处理同时备份的所有内容,从而导致数据库和 CPU 负载繁重,响应时间变慢。

为了尝试弄清楚 Tomcat 在其午睡期间正在做什么,我设置了一个脚本来监视它的日志并发送一个 kill -3 信号来获取线程转储(如果日志中三分钟没有活动)。不幸的是,该信号不会唤醒 Tomcat,因此直到它自行唤醒并恢复处理后才会发生线程转储。

Apache 和 Postgres 在这三分半钟的时间间隔内显然仍然保持清醒和活跃——他们的日志显示在这些时间段内与 Tomcat 无关的活动仍在继续。

我们的 Tomcat 版本是 5.0.28。

想法,建议?我在使用 Tomcat 方面很新,所以请不要假设太多知识。


根据亚历克斯的建议激活详细垃圾收集后,我捕获了几次出现的问题,并发现 Full GC 是负责任的,在两种情况下都需要超过 200 秒,例如:

04:21:55.648491500 [GC 1035796K->933637K(1041984K), 0.3407580 secs]
04:21:56.012832500 [Full GC[Unloading class sun.reflect.GeneratedMethodAccessor633]
04:22:38.003920500 [Unloading class sun.reflect.GeneratedSerializationConstructorAccessor39]
04:22:38.004051500 [Unloading class sun.reflect.GeneratedConstructorAccessor102]
04:22:38.004392500 [Unloading class sun.reflect.GeneratedConstructorAccessor98]
04:22:38.004533500 [Unloading class sun.reflect.GeneratedSerializationConstructorAccessor40]
04:22:38.004716500 …
Run Code Online (Sandbox Code Playgroud)

tomcat garbage-collecting

7
推荐指数
1
解决办法
2万
查看次数

Windows 上的 PHP - ps_files_cleanup_dir 错误

加载 PHP 页面时,我偶尔会收到以下错误:

PHP Notice:  session_start(): ps_files_cleanup_dir: opendir(C:\Windows\TEMP) failed: No error (0) in C:\server\default.php on line 299
Run Code Online (Sandbox Code Playgroud)

一个月前的sess_文件C:\Windows\TEMP仍然存在。

我在 Windows 8.1 上的 IIS 上运行 PHP 5.6.5。

为什么 PHP 无法执行垃圾收集,我该如何解决?

iis php session garbage-collecting

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

JAVA_OPTS -XX:+PrintGCDetails 对性能有影响吗?

有谁知道PrintGCDetails是否对java性能影响很大?我一直在使用与生产服务器相同的设置的临时服务器上监视我们的 java 垃圾收集。

我认为可以肯定地说我不应该在生产中启用此功能,但我不知道这是否真的会对性能产生任何影响。

java garbage-collecting

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

标签 统计

garbage-collecting ×4

php ×2

debian ×1

iis ×1

java ×1

session ×1

tomcat ×1

ubuntu ×1