sridhar raj
sridhar raj

Reputation: 1

Overload due to apache process and Mysql process

I have a small site running and only 20 suppliers used to access this sites for queries. The server is running on high load during the peak hours. Please find the output below:

top - 10:15:42 up 32 days, 20:08,  4 users,  load average: 2.20, 2.06, 1.94
Tasks: 500 total,   1 running, 498 sleeping,   0 stopped,   1 zombie
Cpu(s):  7.1%us,  2.3%sy,  0.0%ni, 90.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32931056k total,  3124852k used, 29806204k free,    49508k buffers
Swap:  3999740k total,        0k used,  3999740k free,  1364836k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
10130 mysql     20   0 6207m 567m 5468 S  232  1.8  14306:04 mysqld
27534 worldsto  20   0  307m  20m 5364 S    5  0.1   0:01.97 apache2
29237 worldsto  20   0  299m  12m 3696 S    2  0.0   0:00.07 apache2
29003 worldsto  20   0  299m  13m 3716 S    1  0.0   0:00.12 apache2

root@server70:~# ps -ef | grep apache | wc
    434    2368   17756

CPU(s):     24
RAM size:   32 GB

From what I have seen from the Apache logs, all the connections are coming from suppliers and company IP addresses. I am sure there is something wrong with the Apache process so that MYSQL is using more CPU load. Please someone help me to identify and fix this problem. Thanks

Upvotes: 0

Views: 711

Answers (1)

Uberbrady
Uberbrady

Reputation: 490

The best troubleshooting step you can do is this:

connect to your MySQL server process, and type:

SHOW FULL PROCESSLIST

That will show you every query that's running. You will probably see the same query showing up multiple times, perhaps with different ID's - maybe something like:

SELECT * FROM foo WHERE fooid='1' SELECT * FROM foo WHERE fooid='2' ...etc...

That means you need an index on 'fooid'.

Upvotes: 1

Related Questions