昨天下载了mysql5.0.45(是二进制版本,解开就能用的那种),操作系统是RHEL5.1 ,RHEL5.1是装在VMware6里面的,遇到一个很奇怪的问题。 没做什么配置,解开tar包就运行mysql,发现产生了多个进程,可是mysql一直是单进程(多线程)的啊,linux下mysql不应该变成多个进程的。
相关信息如下:
查询系统相关信息 [root@vtest bin]# uname -a Linux vtest 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 athlon i386 GNU/Linux [root@vtest bin]# ./mysqladmin -V ./mysqladmin Ver 8.41 Distrib 5.0.45, for pc-linux-gnu on i686 [root@vtest bin]# ./mysqld_safe --user=mysql & [1] 6214
启动mysql [root@vtest bin]# Starting mysqld daemon with databases from /usr/local/mysql/data [root@vtest bin]#
ps查询系统进程 [root@vtest ~]# ps ax ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ 6214 pts/0 S 0:00 /bin/sh ./mysqld_safe --user=mysql 6238 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6239 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6240 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6241 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6242 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6243 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6245 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6246 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6247 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6248 pts/0 S 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql 6249 pts/1 R+ 0:00 ps ax
用TOP命令查看 [root@vtest ~]# top top - 09:48:10 up 9:03, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 55 total, 1 running, 54 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 263564k total, 259360k used, 4204k free, 17776k buffers Swap: 1048568k total, 96k used, 1048472k free, 200296k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6238 mysql 25 0 49272 12m 2020 S 0.0 5.0 0:00.30 mysqld 6239 mysql 18 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6240 mysql 25 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6241 mysql 24 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6242 mysql 24 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6243 mysql 25 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6245 mysql 18 0 49272 12m 2020 S 0.0 5.0 0:00.01 mysqld 6246 mysql 18 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6247 mysql 18 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 6248 mysql 25 0 49272 12m 2020 S 0.0 5.0 0:00.00 mysqld 5981 root 17 0 9152 2748 2216 S 0.0 1.0 0:02.95 sshd ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
其实MySQL一直都是单进程、多线程的工作模式。只是,LinuxThreads并不是真正的线程,因此,这些进程其实还是采用系统调用 clone() 来共享同样的地址空间的。尽管采用 ps 查看的结果看起来是多进程,其实mysqld真正的工作方式还是多线程。 |