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 选择这样做?
我一直在努力寻找 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) 加载 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 无法执行垃圾收集,我该如何解决?
有谁知道PrintGCDetails是否对java性能影响很大?我一直在使用与生产服务器相同的设置的临时服务器上监视我们的 java 垃圾收集。
我认为可以肯定地说我不应该在生产中启用此功能,但我不知道这是否真的会对性能产生任何影响。