免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yzmxf
打印 上一主题 下一主题

[Web] 服务器症状 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-07-10 11:55 |只看该作者
原帖由 alvis 于 2007-7-10 11:39 发表
你用了 PHP 就不可能用 MPM 的 worker 了只能是 prefork,不用浪费时间在 worker 上,

如果你不明白,先看看 /etc/sysconfig/httpd

你能说下故障时的 uptime 的返回么,

一般,不建议把数据库和应用放 ...



我没有发现这个文件/etc/sysconfig/httpd 可能是安装的问题,请问PHP为什么不能用worker而只能是prefork?


另外 ,故障的时候我没有用uptime察看,下次出现的时候注意一下。不过有时用top的时候发现iowait占的资源多

  1. 11:52:42  up 2 days, 5 min,  1 user,  load average: 0.83, 0.77, 0.61
  2. 59 processes: 58 sleeping, 1 running, 0 zombie, 0 stopped
  3. CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
  4.            total    3.2%    0.0%    0.4%   0.0%     0.0%   46.6%   49.7%
  5.            cpu00    0.2%    0.0%    0.4%   0.0%     0.0%   55.2%   44.2%
  6.            cpu01    8.0%    0.0%    0.8%   0.0%     0.0%   38.2%   53.0%
  7.            cpu02    0.2%    0.0%    0.0%   0.0%     0.0%   55.2%   44.6%
  8.            cpu03    4.6%    0.0%    0.4%   0.0%     0.0%   38.0%   57.0%
  9. Mem:  4119992k av, 4050420k used,   69572k free,       0k shrd,  171268k buff
  10.                    2073588k actv,       0k in_d,   70624k in_c
  11. Swap: 2096440k av,       0k used, 2096440k free                 2732424k cached
复制代码


下次我注意一下uptime的返回

麻烦说一下PHP为什么不能用worker而只能是prefork?  给个文章的链接也成

多谢大家的关注

我的小站是基于drupal开发的。

论坛徽章:
0
12 [报告]
发表于 2007-07-10 11:56 |只看该作者
数据库和apache都在同一台机器上

要是能分开就好了。。 没银子呀

论坛徽章:
0
13 [报告]
发表于 2007-07-10 12:40 |只看该作者
php 不是线程安全的, mpm 是基于线程库的,

或者这么说, prefork 的启动是 httpd, mpm 的启动是 httpd.worker
一般来说是这样,根据你编译的情况了

也可以设置不检测,应该,其实 php 不是都不是线程安全的,不过,还有部分是,
所以用 mpm 正常情况会给警告

load average 0.8 也是说高不高的一个数,这个给你个标准,如果你是单至强,
这个值应小于 2, 如果你是双至强,应小于 4

他代表同一时间的执行的进程数,也可以看作你机器 CPU 流水线的负载

i/o 大,就是磁盘操作多,你再 vmstat 1 ,然后贴点返回

drupal 不熟,google 了下,好像是个 CMS,最怕这种开源的了,为了架构方便,
SQL 满处扔,打开一个页面,恨不得要做百十来次 SQL 查询和 update,有的还
session 进 SQL

对了,你再 mysqladmin processlist 给个结果

还有 netstat -x 和 netstat -tnp|grep mysql

论坛徽章:
0
14 [报告]
发表于 2007-07-10 14:02 |只看该作者
原帖由 alvis 于 2007-7-10 12:40 发表 php 不是线程安全的, mpm 是基于线程库的,

或者这么说, prefork 的启动是 httpd, mpm 的启动是 httpd.worker
一般来说是这样,根据你编译的情况了

也可以设置不检测,应该,其实 php 不是都不是线程安全的,不过,还有部分是,
所以用 mpm 正常情况会给警告

load average 0.8 也是说高不高的一个数,这个给你个标准,如果你是单至强,
这个值应小于 2, 如果你是双至强,应小于 4

他代表同一时间的执行的进程数,也可以看作你机器 CPU 流水线的负载

i/o 大,就是磁盘操作多,你再 vmstat 1 ,然后贴点返回

drupal 不熟,google 了下,好像是个 CMS,最怕这种开源的了,为了架构方便,
SQL 满处扔,打开一个页面,恨不得要做百十来次 SQL 查询和 update,有的还
session 进 SQL

对了,你再 mysqladmin processlist 给个结果

还有 netstat -x 和 netstat -tnp|grep mysql





暂时没有理解你说的mpm,一会好好搜索一下

CPU是单至强,load average很少超过2。

vmstat 1的返回:

  1. procs                      memory      swap          io     system         cpu
  2. r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
  3. 0  0      0  62976 166780 2734564    0    0     2    46   41    11 10  1 23  6
  4. 0  0      0  63260 166780 2734584    0    0     0     0  152  1858 17  3 80  0
  5. 0  0      0  63260 166792 2734588    0    0     4   728  300    66  0  0 98  1
  6. 1  0      0  63252 166792 2734588    0    0     0     0  125   295  1  1 98  0
  7. 0  0      0  63208 166792 2734604    0    0     0     0  127  1471 11  2 87  0
  8. 1  0      0  60548 166792 2736996    0    0     0     0  132   639  8  2 91  0
复制代码


mysqladmin proc stat的返回:

  1. +--------+------+-----------+----+---------+------+-------+------------------+
  2. | Id     | User | Host      | db | Command | Time | State | Info             |
  3. +--------+------+-----------+----+---------+------+-------+------------------+
  4. | 186445 | root | localhost |    | Query   | 0    |       | show processlist |
  5. +--------+------+-----------+----+---------+------+-------+------------------+
  6. Uptime: 180286  Threads: 1  Questions: 15976248  Slow queries: 10  Opens: 55236  Flush tables: 3  Open tables: 64  Queries per second avg: 88.616

复制代码


netstat -x 的返回:

  1. Active UNIX domain sockets (w/o servers)
  2. Proto RefCnt Flags       Type       State         I-Node Path
  3. unix  6      [ ]         DGRAM                    1432   /dev/log
  4. unix  3      [ ]         STREAM     CONNECTED     2771637 /tmp/mysql.sock
  5. unix  3      [ ]         STREAM     CONNECTED     2771636
  6. unix  3      [ ]         STREAM     CONNECTED     2771623 /tmp/mysql.sock
  7. unix  3      [ ]         STREAM     CONNECTED     2771622
  8. unix  3      [ ]         STREAM     CONNECTED     2771507 /tmp/mysql.sock
  9. unix  3      [ ]         STREAM     CONNECTED     2771506
  10. unix  3      [ ]         STREAM     CONNECTED     2766111
  11. unix  3      [ ]         STREAM     CONNECTED     2766110
  12. unix  2      [ ]         STREAM     CONNECTED     123503
  13. unix  2      [ ]         STREAM     CONNECTED     123500
  14. unix  2      [ ]         STREAM     CONNECTED     123497
  15. unix  2      [ ]         DGRAM                    2062   
  16. unix  2      [ ]         DGRAM                    1960   
  17. unix  2      [ ]         DGRAM                    1792   
  18. unix  2      [ ]         DGRAM                    1440   
复制代码


而netstat -tnp | grep mysql没有返回

上面这些数据都是在正常状态下的返回。等故障出来了我再把以上的命令的返回记录下来


至于drupal,确实有你所说的情况,所以很多页面都作了一下基于数据库的cache

论坛徽章:
0
15 [报告]
发表于 2007-07-10 14:26 |只看该作者
netstat -tnp | grep mysql 没返回就是好事情

再觉得慢的时候,就 vmstat 1 看

对了,如果有装 sysstat 也可以 mpstat -P ALL 1, 和 iostat 1

论坛徽章:
0
16 [报告]
发表于 2007-07-10 14:51 |只看该作者
多谢alvis !

我的这个小站慢的时候不是常见 。就是偶尔出现非静态页面没有反应。要重启一下才行

也许真如你所说的两个加速软件不要一起使用。还有那个MPM 估计改不了了。改的话应该要重新编译一下,条件不允许。得过且过吧

论坛徽章:
0
17 [报告]
发表于 2007-07-10 15:21 |只看该作者
两个模块不要同时打开不是俺说的,虽然俺同意他的观点,但我的环境中也是两个一起用的,

ea 负责 cache 预编译结果, ze 负责优化代码执行,因为我的环境没有 zend 编译的代码,应该不会有冲突的吧

不过,就你的 case 来看,可能应该把 ea 的 compress_level 设低点儿,或者干脆关了,
而且 ea 的 keys,session, content 最好也 shm only,能改善下 I/O

不过,个人推测,你机器问题是数据库死锁,mysql 最擅长的 bug 就是 lock,如果你的数据库表引擎用得还是
myisam 的话,就是 table lock,而不知是 row lock,唉,打了这么多,就索性举个例子。

你对 Table A 做 update,而这个 update 又是基于一个不带索引的查询子集,这个查询,真的会很慢(几秒的时间)
而这时,同样的 update 还能被提交,并且进行处理,这时,最先的那个 update 开始的查询处理完了,开始 write
这时,就会有个写锁在上面,后续的 read 看见写锁,就 wait,可随着任务太多,就算开始的写锁释放了,后面有一队
锁等着处理呢,就像以前西直门的堵车一样,你打开页面,也要 select sql,可 sql 在排队,sql 排队可以慢慢等,可
你的浏览器有 timeout

关于锁,研究下http://dev.mysql.com/doc/refman/ ... html#locking-issues

论坛徽章:
0
18 [报告]
发表于 2007-07-10 15:25 |只看该作者
唉,我放着自己的问题不去解决,到处去琢磨别人的问题,要是被老板知道了 .......................

我还是干会儿活先

论坛徽章:
0
19 [报告]
发表于 2007-07-10 16:09 |只看该作者
多谢大家的关注

等我彻底解决了一定来发帖把原因和解决方法说清楚:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP