近日手头拿到了一个调优问题,详细一看,发现是apache+php问题,问题的具体表现如下:

正常运行的服务常常停止响应, 一旦停止响应, 维护人员就不得己需要去重启apache服务

对php不熟,调查过程也顺便学习一下php的基本配置。

2015-3-11 调试

首先去服务器进程看了看,发现有一个 http.exe 在后台一直占用%50左右的 cpu,即使通过 Moniter 结束了服务,这个进程也依然坚挺,始终占用固定的CPU, 打开perfmon.exe,发现 内存换页频繁,且都是硬错误,估计就是那个进程导致的,直接结束之。 结果cpu一下子就下来了。

又研究了部分参数设置,尤其是 mpm_module 相关的设置

通过以下命令可以查看加载的模块

httpd -l

发现mpm_module的的加载情况和实际配置不符,windows系统中,其实只加载了后者,实际配置如下:

# 配置了mpm_winnt_module以后,mpm_prefork_module就不起作用了

# 可以通过 httpd -l查看当前加载的模块

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxClients 256

MaxRequestsPerChild 500

# mpm_winnt_module 该多路处理模块(MPM)是Windows NT上的默认值。它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。StartServers定义的进行启动

# ThreadsPerChild 200 启动的线程数,公司bbs平常都在20+,暂时这样配置节省内存资源

# MaxRequestsPerChild 10000 这个模式只启动两个进程(httpd.exe)一主一子,子进程执行10000个请求以后会被终止,然后另起一个

# Win32DisableAcceptEx Use accept() rather than AcceptEx() to accept network connections,

# 另外重启apache时候,先关闭,并且结束所有httpd.exe,再启动,不要直接restart,会遗留下httpd的进程不关

ThreadsPerChild 400

MaxRequestsPerChild 10000

Win32DisableAcceptEx

AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。如果遇到类似于如下的错误:

[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.

就需要使用这个指令来禁止使用AcceptEx() 。

对于windows操作系统,可以使用专用的mpm_winnt_module,来提高性能,但是参数配置要注意。

2015-3-18 调试

观察了几天,发现还是有问题,找错误日志去看了看,发现了一个问题

FATAL: erealloc(): Unable to allocate 98304 bytes

每次运行到一个阶段,apache就会出现无法回收内存的严重问题,这样一来,用不了多久就得重启了

经过调查,从apache的 bug 一路找过去,最后发现这个是php的一个 bug,但是都没有解决。。。

最后又找了一阵子,发现一个 论坛 中有讨论,找到一句靠谱的话

Looks like php related.

You are using outdated/legacy PHP 4 and Apache 2.0, not anymore supported for quite some time.

It is a known issue with a PHP before 5.3 that it has memory management and stability issues.

#The most common solution for this kinfd of errors was using PHP with Fast CGI (mod_fcgid). I do not know there is still somewhere a version for Apache 2.0.

Also I see also PHP warnings: Undefined variable: id_vue libelle_vue.

随后我找了一个php5.2.7稳定版进行升级,升级以后,做了简单的并发访问,没有打印异常。

继续观察观察

apache php 调优_记一次apache+php调优相关推荐

  1. 古筝d调变降e调怎么办_从d调调到e调,教你古筝的操作方法

    古筝从d调调到e调,早艺网教你古筝的操作方法.古筝,作为现在很多年轻人喜欢的乐器,许多朋友反映不知道如何从D调转到E调,今天就让小编跟大家介绍古筝如何由D调转E调,希望大家喜欢! 古筝由D调转E调的方 ...

  2. java面试 系统调优_面试官:Java性能调优你会多少?一个问题就把我问的哑口无言,哭了!...

    一.前言 什么是性能调优? 性能调优其实很好理解,就是优化硬件.操作系统.应用之间的一个充分的协作,最大化的发挥出硬件的极致性能,来应对高负载的业务需求. 为什么需要性能优化? 其实说到底就是两个原因 ...

  3. 台式电脑屏幕怎么调亮度_电脑屏幕亮度到底怎么调才最好?

    受到再大的打击,只要生命还在,请相信每天的太阳都是新的. Hello,大家好,我是BoBo 一个喜欢做公众号,但是做的又有点糙的非科班小编. 这里没有华丽的排版,也没有长长的套路,有的只是一颗真心,喜 ...

  4. s120面板控制调速_棒材生产线S120辅传动装置调速方法概述

    龙源期刊网 http://www.qikan.com.cn 棒材生产线 S120 辅传动装置调速方法概述 作者:张青秀 来源:<科学与信息化> 2018 年第 10 期 摘 要 本文主要介 ...

  5. 变频调速_三相异步电机原理_U/F调速/矢量控制_机械特性_负载特性

    一.前言 工控项目中多数常见的以三相异步电机为驱动执行电机,为此了解电机工作原理,更好的与变频器控制使用达到最佳控制效果,参考哈工大课件!!! 二.三相异步电机运行原理 (1)三相感应电动势工作模型 ...

  6. 大泥王怎么调时区_卡西欧大泥王怎么调时间 卡西欧大泥王功能教学

    卡西欧大泥王相信很多人都十分熟悉的,这个系列的手表在卡西欧家一直挺火,十分适合户外佩戴,那么卡西欧大泥王手表怎么调时间呢? 卡西欧大泥王怎么调时间 1.首先点击左上边的按键进入设置功能. 2.然后按一 ...

  7. apache php 调优_性能优化之PHP优化

    一.语言级性能优化(一) PHP 性能问题的解决方向 PHP语言级别的性能优化 => PHP周边问题的性能优化 => PHP语言自身分析.优化 1.压力测试工具 Apache Benchm ...

  8. DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优

    胡夕,<Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...

  9. OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装配置sublime text 3(Build 3083)
  2. 8个方法解决90%的NLP问题
  3. fopen需要改写成fopen_s的时候
  4. TCP/IP协议栈到底是内核态好还是用户态好?
  5. OC开发_整理笔记—— CoreLocation(1)基本使用
  6. 转载:python引用DLL文件的方法
  7. cmd查看某个服务器端口状态,cmd中检测端口是否处于监听状态 | IT博客
  8. 企业文化:谦虚(谦逊,虚心)
  9. Android设备的ID
  10. MyBatis的ResultMaps之一对一关系
  11. [梦]2005年9月1日
  12. 解决Android 应用运行报Unable to resolve superclass of L错误
  13. 语言学句法分析树形图怎么画_英语语言学树形结构图怎么画
  14. 洛谷p3376 网络流最大流模板题
  15. 如果张柏芝的孩子长大
  16. 2022 计算机视觉顶会论文----目标检测
  17. leetcode第六题 Z字形变换
  18. 电脑声音太小,安装音量提升插件
  19. 榛果 美团 登录 爬虫 requests session
  20. echarts 导入地区.json文件生成地图

热门文章

  1. 如何从Exchange Server 2007/2010上删除邮件
  2. Ubuntu系统(七)-安装FTP
  3. JavaScript学习历程和心得
  4. Python 动态变量名定义与调用
  5. 机器学习:范数及代码实现
  6. synchronized与Lock的区别与使用
  7. TCP握手--(HTTP权威指南学习笔记)
  8. vb 搜索指定目录下的指定类型文件
  9. 修饰符 public、 private 和 protected和区别
  10. SpringCloud系列——Zuul 动态路由