Connect To Mysql From Many Remote Virtual Hosts
Jan 9, 2007I have a set up where server 1 holds a mysql DB and a virtual host. server 2 holds many virtual hosts in apache (16) connecting to this DB.
The virtual hosts all hold the same script, but the single VH on server 1 receives about the same amount of visits as all the VHs of server 2.
server 1 is very busy at times, like 100% CPU and a load around 10 for long period of times.
server 2 is not very busy, around 30% CPU usage and 0.6 CPU load.
Yet, users on server 2 experience *much slower* response times than the ones on server 1.
The obvious reason could be the network between the two, but I'm not convinced (6 seconds for a query run from server 2 when it brings back 1 row and takes 0.01 second from server 1).
I was wondering what other reasons it could be.
The mysql processlist is weird:
Code:
mysql> show processlist;
+-------+----------+---------------+----------+---------+------+--------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+----------+---------------+----------+---------+------+--------------------+------------------------------------------------------------------------------------------------------+
| 81817 | mysite | localhost | mysite | Sleep | 865 | | NULL |
| 94992 | mysite | server2:47927 | mysite | Sleep | 188 | | NULL |
| 96890 | mysite | server2:50881 | mysite | Sleep | 26 | | NULL |
| 97213 | mysite | server2:51010 | mysite | Sleep | 22 | | NULL |
| 97391 | mysite | server2:51085 | mysite | Sleep | 36 | | NULL |
| 97919 | mysite | server2:51300 | mysite | Sleep | 49 | | NULL |
| 97927 | mysite | server2:51306 | NULL | Sleep | 49 | | NULL |
| 97933 | mysite | server2:51282 | mysite | Sleep | 48 | | NULL
| 97933 | mysite | server2:51282 | mysite | Sleep | 48 | | NULL |
| 97958 | mysite | server2:51321 | mysite | Sleep | 26 | | NULL |
| 97961 | mysite | server2:51323 | mysite | Sleep | 46 | | NULL |
| 98104 | mysite | server2:51344 | mysite | Sleep | 39 | | NULL |
| 98169 | mysite | server2:51376 | NULL | Sleep | 36 | | NULL |
| 98177 | mysite | server2:51388 | mysite | Sleep | 9 | | NULL |
| 98365 | mysite | server2:51461 | mysite | Sleep | 26 | | NULL |
| 98377 | mysite | server2:51427 | mysite | Sleep | 26 | | NULL |
| 98380 | mysite | server2:51468 | mysite | Sleep | 6 | | NULL |
| 98394 | mysite | server2:51474 | mysite | Sleep | 26 | | NULL |
| 98404 | mysite | server2:51479 | mysite | Sleep | 26 | | NULL |
| 98418 | mysite | server2:51486 | mysite | Sleep | 26 | | NULL |
| 98419 | mysite | server2:51487 | mysite | Sleep | 26 | | NULL |
| 98429 | mysite | server2:51496 | mysite | Sleep | 2 | | NULL |
| 98503 | mysite | server2:51520 | mysite | Sleep | 22 | | NULL |
| 98512 | mysite | server2:51524 | mysite | Sleep | 22 | | NULL |
| 98514 | mysite | server2:51525 | mysite | Sleep | 20 | | NULL |
| 98519 | mysite | server2:51526 | mysite | Sleep | 22 | | NULL |
| 98557 | mysite | server2:51514 | mysite | Sleep | 21 | | NULL |
| 98568 | mysite | server2:51548 | mysite | Sleep | 20 | | NULL |
| 98581 | mysite | server2:51557 | mysite | Sleep | 5 | | NULL |
| 98617 | mysite | server2:51572 | mysite | Sleep | 18 | | NULL |
| 98620 | mysite | server2:51574 | NULL | Sleep | 18 | | NULL |
| 98630 | mysite | server2:51577 | mysite | Sleep | 17 | | NULL |
| 98644 | mysite | server2:51584 | mysite | Sleep | 17 | | NULL |
| 98681 | mysite | server2:51601 | mysite | Sleep | 15 | | NULL |
| 98698 | mysite | server2:51604 | mysite | Sleep | 14 | | NULL |
| 98704 | mysite | server2:51606 | mysite | Sleep | 14 | | NULL |
| 98714 | mysite | server2:51610 | NULL | Sleep | 14 | | NULL |
| 98736 | mysite | server2:51619 | NULL | Sleep | 13 | | NULL |
| 98748 | mysite | server2:51626 | NULL | Sleep | 12 | | NULL |
| 98753 | mysite | server2:51628 | mysite | Sleep | 12 | | NULL |
| 98785 | mysite | server2:51635 | mysite | Sleep | 11 | | NULL |
| 98820 | mysite | server2:51654 | mysite | Sleep | 10 | | NULL |
| 98821 | mysite | server2:51655 | mysite | Sleep | 10 | | NULL |
| 98822 | mysite | server2:51656 | mysite | Sleep | 10 | | NULL |
| 98823 | mysite | server2:51657 | mysite | Sleep | 10 | | NULL |
| 98836 | mysite | server2:51660 | mysite | Sleep | 9 | | NULL |
| 98840 | mysite | server2:51662 | NULL | Sleep | 9 | | NULL |
| 98841 | mysite | localhost | NULL | Query | 0 | NULL | show processlist |
| 98901 | mysite | server2:51680 | mysite | Sleep | 6 | | NULL |
| 98903 | mysite | server2:51651 | mysite | Sleep | 7 | | NULL |
| 98920 | mysite | server2:51684 | mysite | Sleep | 6 | | NULL |
| 98947 | mysite | localhost | mysite | Sleep | 1 | | NULL |
| 98954 | mysite | server2:51696 | mysite | Sleep | 5 | | NULL |
| 99024 | mysite | server2:51710 | mysite | Sleep | 1 | | NULL |
| 99031 | mysite | server2:51712 | mysite | Sleep | 2 | | NULL |
| 99032 | mysite | server2:51686 | mysite | Sleep | 2 | | NULL |
| 99041 | mysite | server2:51694 | mysite | Sleep | 2 | | NULL |
| 99049 | mysite | server2:51717 | mysite | Sleep | 2 | | NULL |
| 99058 | mysite | server2:51720 | mysite | Sleep | 1 | | NULL |
| 99063 | mysite | server2:51685 | mysite | Sleep | 1 | | NULL |
| 99064 | mysite | server2:51722 | mysite | Sleep | 2 | | NULL |
| 99073 | mysite | localhost | mysite | Sleep | 1 | | NULL |
| 99075 | mysite | server2:51724 | mysite | Sleep | 1 | | NULL |
| 99086 | mysite | localhost | mysite | Query | 1 | Creating tmp table | SELECT DISTINCT * |
| 99089 | mysite | localhost | mysite | Sleep | 1 | | NULL |
+-------+----------+---------------+----------+---------+------+-----------
Why so many sleeping processes from server 2, and none or almost none from server 1 ?
Is it normal that every query from server 2 is open on a different port ? Should they be grouped by virtual host, or is there one different port for each script running concurrently?
What could be a reason for server 2 having problems to open connections on server 1, and how to solve it?
Right now I'm about to deport more users from server 1 to new virtual hosts on server 2, hoping it will lower the load on the first machine and overall accelerate the response times. I just thought I'd post here first because this all seems very weird to me and i thought someone with an external look might tell me what I'm doing wrong. And also if network would be the problem maybe that's not the clever thing to do to make more users remote.