设置内存GC提高IIS+PHP运行稳定性

IIS配置php提供web服务. 短期访问正常,长时间高压力访问容易崩溃.表现为IIS提示500错误,php-cgi.exe崩溃. 此时在php日志中看不到任何异常,但windows事件日志记录下了php-cgi.exe应用程序错误. 其原因和php内存管理有关.有以下改善方法1. 服务器配置足够物理内存.根据任务管理器界面的物理内存数据,保留更多的空闲物理内存给php-cgi.exe使用. 避免总内存占用超过物理内存.2. 给php-cgi.exe配置足够内存.php内存回收机制决定了达到一半的内存占用时就会运行gc. 频繁的gc造成php崩溃(windows版php的bug)
;根据实际情况可以改大些. 最好超过实际占用值的两倍以上(任务管理器可以查看php-cgi进程得知实际占用值)
memory_limit = 128M
程序中如下代码,效果和更改php.ini相同.
ini_set('memory_limit','128M');
3. fastcgi配置请求超过一定数量(例如1000) 就重启进程.
       MaxInstances=64   #根据内存和CPU情况配置最大php-cgi.exe进程数. 不要服务器压力过大.
       InstanceMaxRequests=1000  #每处理1000个请求则重启实例. 
       EnvironmentVars=PHP_FCGI_MAX_REQUESTS:1000 #同上
如果64/1000还不行,可以配置更少4.减少请求处理内存占用和处理时长.优化PHP代码,提高程序性能和减少内存占用。比如使用php完成采集任务时避免一次采集过多内容(那样会占用大量的内存和单次cpu处理时间).5. 可以考虑在php处理过程中关闭gc.虽然关闭gc会造成php内存占用增大,但可以避免频繁运行gc造成php-cgi.exe崩溃.
gc_collect_cycles();
gc_disable();
....php业务代码.
gc_enable();
以上方法可以极大的改善windows版php的运行稳定性. 总结就是以下几点:1. 不要让PHP服务器满负荷运行.2. 尽可能减少PHP引擎的内存回收次数(通过优化代码降低内存占用或关闭gc实现)
### 如何在 IntelliJ IDEA 中配置 JVM 堆内存大小和垃圾回收(GC)参数 #### 配置方法概述 对于希望调整 IntelliJ IDEA 的性能或解决由于内存不足引发的问题,可以通过修改 IDE 启动时所使用的 JVM 参数来进行优化。这不仅有助于提高开发效率,还能有效预防因资源耗尽而导致的应用崩溃。 #### 修改IDEA启动参数的方式 一种常见的做法是在安装目录下的 `bin` 文件夹内找到名为 `idea.properties` 或者针对 Windows 用户可能是 `idea.exe.vmoptions` 和 Linux/macOS 上则是 `idea64.vmoptions` 的文件,在这些文件中可以直接编辑与 JVM 相关的选项[^1]。 另一种方式是通过命令行启动工具完成设置: ```bash ./idea.sh -Xms512m -Xmx2048m -Xmx` 则定义最大可用空间;至于具体的 GC 算法选择,则取决于应用的具体需求以及硬件条件等因素决定采用何种策略最为合适[^2]。 #### 使用图形界面进行配置 除了手动更改配置文件外,还可以利用IDE本身提供的功能实现相同目的。进入 **Help | Edit Custom VM Options...**, 此操作将会打开一个特殊的 `.vmoptions` 文件副本供用户安全地做个性化定制而不必担心破坏原始环境[^3]。 在这个过程中需要注意的是,当增加 JVM 内存限制时应充分考虑到宿主机的整体资源配置情况,以免造成其他应用程序无法获得足够的 RAM 支持从而影响整个系统的稳定性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值