开发者社区> 问答> 正文

apachewarnOS 64指定的网络名不再可用 or Cannot initialize zendmm storagewin32

  运行环境
  win server 2008 r2 x64(阿里云)+apache2.2+php5.3.29
  每天pv只有1000左右
  运行一段时间就会出现[warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptExfailed.
  按照网上说法在httpd.conf里加上下面一段
  <ifmodule mpm_winnt.c="">
  ThreadsPerChild 1000
  MaxRequestsPerChild 10000
  Win32DisableAcceptEx
  
  后会出现
  Cannot initialize zend_mm storage [win32]
  [notice] Parent: child process exited with status 255 -- Restarting.
  apache一直重启
  google了好久没有地方能解决啊
  有大神给指导一下吗

展开
收起
新人小白1 2015-12-15 09:41:21 4942 0
2 条回答
写回答
取消 提交回答
  • 回 1楼哎呀我擦的帖子
    线程调到350,内存没满
    2015-12-15 10:16:51
    赞同 展开评论 打赏
  • 回 楼主新人小白1的帖子
    这个和你服务器的内存有关,看看是不是内存使用满了,尝试调低一下apache的线程数,或者升级一下内存看看

    -------------------------

    ReapachewarnOS 64指定的网络名不再可用 or Cannot initialize zendmm storagewin32
    网上搜到的,你看看
    Apache是大家经常在服务器中安装的webserver之一,配置Apache时往往有些参数设置不正确会引发很多问题。

    今天UPUPW给大家详细解答下Apache错误报告中出现Cannot initialize zend_mm storage [win32]的原因:

    知识要点:

    1、在win32下单个进程的最大内存限制是1024MB

    2、Apache源码中设置的单个线程堆栈是2M

    错误分析:

    1、如果Apache的线程设置大于或等于512,那么如果连接数达到512把线程都占满的情况下则httpd.exe的工作进程内存占用会达到1024MB最大值

    2、Apache如果以isapi的形式加载的PHP则httpd.exe进程还需要留出php的运行内存,否则就会报Cannot initialize zend_mm storage [win32]。

    3、PHP的运行内存限制一般为128MB,如果httpd.exe内存占用接近或者达到了1024MB则PHP没有足够的运行内存了。

    解决思路:

    1、降低Apache的线程数量

    2、换64位操作系统用64位Apache获得更大的内存空间

    解决方法:

    1、打开upupw下Apache/conf/httpd.conf(正常的在httpd-mpm.conf下)

    2、查找ThreadsPerChild把参数修改为350(有的教程说调到512以下即可,因为考虑到预留php的内存所以350或者以下更为合适)

    3、最后重启下Apache配置即可生效。
    2015-12-15 10:02:44
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
“移”网打尽-Mobile Network as a Service 网络即服务 立即下载
“移”网打尽—— Mobile Network as a Service 网络即服务 立即下载
容器技术在千万用户级企业的实践及网络方案优化 立即下载