QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 845|回复: 3

高手请进~~有关PHP与MYSQL的问题~

[复制链接]
发表于 2004-3-25 01:15:48 | 显示全部楼层 |阅读模式
我的服务器配置为:
apache2.0.48+PHP5+Mysql5
我的Mysql需要提供以下服务:
1.为网站提供数据库服务
2.为论坛提供数据库服务
3.为本服务器FTP下载提供用户认证服务
4.为远程服务器FTP下载提供用户认证服务

近来发现很奇怪的事情:
服务器上相关的进程数如下:
Apache一般300-400个左右的连接。
本机FTP约500-800个左右的连接。
远程FTP约200-350个左右的连接。
正常情况下Mysql的进程数不会很少超过50以上的~(对网站查询我进行了优化,论坛我就管理得较少~),但有些时候会发生这样的情况:
就是到了某些时候,Mysql的进程数就会这突然的增加到很多~然后一直上升,当达到一定的程序时,就会引起apache服务,FTP服务,远程Ftp服务不能访问~然后导致系统负荷大大加多,而导致当机的可能性~~(不当机也是相当于当机了),至于为什么会发生这种情况,我一直不是十分清楚,但大约与Mysql的locked进程累积增多有一定的关系~~

现在我对Mysql进行了分流,按上面的四个功能开了四个端口,以供使用~~
但在网站和论坛的时候就出现了问题~~

大家知道,在Php.ini文件中,可以指定 mysql的SOCKET文件的位置的,如果不指定的话,默认会是/tmp/mysql.sock。我是把其指定到了网站的MYSQL服务的位置。但这时问题就出现了:
例如,我开的MYSQL用于网站服务的端口为3306,而用于论坛服务的端口为3316的话~,但实际上不管是网站还是论坛,访问的都是3306的端口,因此我无法达到我的目的:观察网站用了多少连接,而论坛又用了多少连接。
我想过很多方法,如:不同的虚拟主机用不同的php.ini文件,但我不会设置~也没有找到设置的文章~,在不同的虚拟主机内加载不同的PHP模块,也不行~,好像loadmodule指令在APACHE中是全局来的~~

后来我想出一种方法解决了这个问题:
就是在论坛的连接中用IP的形式连接~~,我把其改为我的服务器的IP地址加上端口,如:XXX.XXX.XXX.XXX:3316,同时开了一个主机为%的用户,终于实现了我的目的。

但我不清楚这样会不会带来后遗症?
用localhost访问和用本机的ip访问的速度会不会是一样的快呢?
另外,用本机的IP来访问,会不会占用本机的带宽呢?
 楼主| 发表于 2004-3-25 18:28:52 | 显示全部楼层
这样是有问题存在的~~,而且事实上我已经发现了问题的存在。

那就是数据的不同时~~如:
你A服务器和B服务器是同一个数据库目录的,启动后,A写数据,B只取数据。A写的数据后B不能马上就反映出来~~而是可能要等到下次启动后才反映出来~~当然,如果你在B的服务器上执行 Flush Tables后就可以与A暂时保持同步~~
我看了Mysqld的命令行选项,发现MYSQLD有一个选项--flush-time变量,这个变量就是说,这个服务器隔多长的时间刷新一次表~~默认是0,也就是说从不刷新~~我把其改了一个数值,就基本上可以在一定的时间内自动保持数据的同步了~~

这是我的一点经验~~希望可以给和我这样有这种需要的朋友一点启示~
回复

使用道具 举报

发表于 2004-3-25 19:45:40 | 显示全部楼层
好~~~~~~~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2004-3-25 23:35:55 | 显示全部楼层
偶现在痛苦着呢~~ Mysql始终是偶的一块心病啊~
[code:1]init-+-bdflush
     |-crond
     |-httpd---9*[httpd]
     |-httpd---3*[httpd]
     |-katad-1
     |-katad-2
     |-keventd
     |-khubd
     |-27*[kjournald]
     |-klogd
     |-kscand
     |-ksoftirqd/0
     |-ksoftirqd/1
     |-kswapd
     |-kupdated
     |-mdrecoveryd
     |-3*[mingetty]
     |-2*[mysqld_safe---mysqld---mysqld---17*[mysqld]]
     |-mysqld_safe---mysqld---mysqld---12*[mysqld]
     |-mysqld_safe---mysqld---mysqld---20*[mysqld]
     |-2*[portsentry]
     |-pureftpd_free---498*[pureftpd_free]
     |-pureftpd_vip---236*[pureftpd_vip]
     |-scsi_eh_0
     |-scsi_eh_1
     |-sshd---sshd---bash---pstree
     |-syslogd
     |-vsftpd_up---5*[vsftpd_up---vsftpd_up]
     `-xinetd[/code:1]
[code:1] 23:21:12  up 11:17,  1 user,  load average: 8.72, 9.85, 9.86
869 processes: 865 sleeping, 3 running, 1 zombie, 0 stopped
CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
           total   54.2%    0.0%   14.8%   2.8%     6.6%   14.4%    6.9%
           cpu00   49.1%    0.0%   13.0%   5.6%    13.0%   13.3%    5.8%
           cpu01   59.3%    0.0%   16.6%   0.0%     0.3%   15.5%    8.1%
Mem:  2052792k av, 2034584k used,   18208k free,       0k shrd,   16568k buff
                   1465328k actv,  175712k in_d,   30316k in_c
Swap: 4401768k av,     644k used, 4401124k free                 1419856k cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
6688 nobody    19   0 24628  24M  2460 S    13.9  1.1   0:03   0 httpd
7517 mysqlusr  16   0 22488  21M  1320 S     6.3  1.0   0:01   0 mysqld
7738 mysqlusr  19   0 22592  22M  1320 S     4.6  1.1   0:00   1 mysqld[/code:1]

大家帮我看看~~我的服务器算不算正常的~~
顺便说一句,两个apache在编译时都是加了--with-mpm=worker的~~每个进程的最大线程数好像为40,可怜可怜偶的CPU好惨啊~,是一块P42.4GC。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-9 05:04 , Processed in 0.041234 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表