应用程序堆栈(全部使用最新的稳定版本):
- Ubuntu
- 阿帕奇
- 乘客
- 红宝石
- Ruby on Rails
重新启动 apache(apache2ctl graceful)后,页面请求非常快,大约 600 毫秒。然后,对于每个请求(仍然是同一个页面,只是重新加载),页面加载时间会增加 250-500 毫秒/请求。因此,在 20 多个请求之后,我大约需要 10 秒钟才能加载同一个页面。
查看 rails 日志和 webkit 检查器中的加载时间,它们都在增加。页面加载是简单的 GET,即没有其他数据。
对此您有什么想法吗?此外,如果我需要详细说明任何事情,请告诉我。
第二页加载:
Rails 日志摘录
Started GET "/categories" for 214.200.52.199 at Mon Oct 25 20:38:02 +0000 2010
Processing by CategoriesController#index as HTML
Rendered shared/sections/_settings.html.haml (101.6ms)
Rendered layouts/_header.html.haml (172.0ms)
Rendered layouts/_footer.html.haml (2.8ms)
Rendered categories/index.html.haml within layouts/application (319.3ms)
Completed 200 OK in 339ms (Views: 320.1ms)
顶部
top - 20:54:46 up 1 day, 1:17, 5 users, load average: 0.24, 0.09, 0.06
Tasks: 41 total, 3 running, 38 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.3%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1048576k total, 638576k used, 410000k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 32602 root 21 0 32152 2284 1904 S 0.3 0.2 0:00.01 PassengerHelper
1 root 15 0 23300 1580 1264 S 0.0 0.2 0:02.25 init 2024 alexande 25 0 172m 97m 3028 S 0.0 9.5 0:04.35 ruby1.8
3317 alexande 18 0 176m 100m 1956 S 0.0 9.8 0:00.90 ruby1.8 3348 root 15 0 47704 1792 1396 S 0.0 0.2 0:00.01 su 3460 root 15 0 75600 4140 2672 S 0.0 0.4 0:00.23 apache2
3570 root 15 0 19436 2216 1612 S 0.0 0.2 0:00.00 bash 7519 root 16 0 79120 3472 2708 S 0.0 0.3 0:00.01 sshd
7663 alexande 15 0 79260 1784 900 S 0.0 0.2 0:00.14 sshd 7664 alexande 15 0 19424 2224 1632 S 0.0 0.2 0:00.13 bash 8103 root 16 0 79120 3476 2708 S 0.0 0.3 0:00.01 sshd
8156 alexande 15 0 79120 1676 888 R 0.0 0.2 0:01.57 sshd 8157 alexande 16 0 19416 2204 1624 S 0.0 0.2 0:00.00 bash 9273 root 16 0 79124 3492 2720 S 0.0 0.3 0:00.01 sshd
9426 root 15 0 47704 1792 1396 S 0.0 0.2 0:00.00 su 9515 alexande 15 0 79124 1656 856 S 0.0 0.2 0:00.00 sshd 9517 alexande 15 0 19416 2212 1628 S 0.0 0.2 0:00.01 bash
9550 root 16 0 19508 2272 1620 S 0.0 0.2 0:00.03 bash 11660 mongodb 17 0 193m 23m 20m R 0.0 2.3 0:09.26 mongod 11747 root 15 0 9744 872 704 S 0.0 0.1 0:00.02 tail
13349 alexande 15 0 9744 864 704 S 0.0 0.1 0:00.06 tail 15560 root 15 0 47704 1796 1396 S 0.0 0.2 0:00.00 su 15622 root 15 0 19612 2376 1620 S 0.0 0.2 0:00.24 bash
15660 root 15 0 19076 1316 1048 R 0.0 0.1 0:05.07 top 19754 root 15 0 49248 1080 540 S 0.0 0.1 0:00.24 sshd 19755 messageb 15 0 23540 1168 792 S 0.0 0.1 0:00.44 dbus-daemon
19769 root 15 0 21064 888 680 S 0.0 0.1 0:00.32 cron 19770 root 15 0 20392 1636 816 S 0.0 0.2 0:00.21 syslog-ng 20465 root 15 0 58520 5136 2432 S 0.0 0.5 0:02.75 console-kit-dae
22385 root 16 0 79120 3476 2708 S 0.0 0.3 0:00.02 sshd 22440 alexande 15 0 79120 1692 888 S 0.0 0.2 0:00.54 sshd 22441 alexande 15 0 19416 2204 1624 S 0.0 0.2 0:00.00 bash
32126 root 16 0 79120 3476 2708 S 0.0 0.3 0:00.01 sshd 32204 alexande 15 0 79120 1688 888 S 0.0 0.2 0:00.04 sshd 32205 alexande 15 0 19420 2224 1632 S 0.0 0.2 0:00.06 bash
32323 alexande 15 0 9744 868 704 S 0.0 0.1 0:00.29 tail 32598 www-data 15 0 75600 1984 508 S 0.0 0.2 0:00.00 apache2 32599 root 20 0 23224 1860 1584 S 0.0 0.2 0:00.00 PassengerWatchd
32603 root 17 0 53944 16m 1588 S 0.0 1.6 0:00.21 ruby1.8 32606 nobody 18 0 71976 3696 2920 S 0.0 0.4 0:00.00 PassengerLoggin
32613 www-data 17 0 290m 3668 1756 S 0.0 0.3 0:00.00 apache2
第十五页加载:
Rails 日志摘录
Started GET "/categories" for 214.200.52.199 at Mon Oct 25 20:44:59 +0000 2010
Processing by CategoriesController#index as HTML
Rendered shared/sections/_settings.html.haml (4554.7ms)
Rendered layouts/_header.html.haml (1718.4ms)
Rendered layouts/_footer.html.haml (2.8ms)
Rendered categories/index.html.haml within layouts/application (6446.8ms)
Completed 200 OK in 6821ms (Views: 6447.6ms)
顶部
top - 20:48:22 up 1 day, 1:11, 5 users, load average: 0.02, 0.10, 0.08
Tasks: 40 total, 2 running, 38 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%stMem: 1048576k total, 548404k used, 500172k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11660 mongodb 15 0 193m 23m 20m S 0.3 2.3 0:08.98 mongod
1 root 15 0 23300 1580 1264 S 0.0 0.2 0:02.25 init 3348 root 15 0 47704 1792 1396 S 0.0 0.2 0:00.01 su
3460 root 15 0 75600 4136 2672 S 0.0 0.4 0:00.22 apache2 3570 root 15 0 19436 2216 1612 S 0.0 0.2 0:00.00 bash 7519 root 16 0 79120 3472 2708 S 0.0 0.3 0:00.01 sshd
7663 alexande 15 0 79260 1784 900 S 0.0 0.2 0:00.14 sshd 7664 alexande 15 0 19424 2224 1632 S 0.0 0.2 0:00.13 bash
8103 root 16 0 79120 3476 2708 S 0.0 0.3 0:00.01 sshd 8156 alexande 15 0 79120 1676 888 R 0.0 0.2 0:01.54 sshd 8157 alexande 16 0 19416 2204 1624 S 0.0 0.2 0:00.00 bash
9273 root 16 0 79124 3492 2720 S 0.0 0.3 0:00.01 sshd 9426 root 15 0 47704 1792 1396 S 0.0 0.2 0:00.00 su 9515 alexande 15 0 79124 1656 856 S 0.0 0.2 0:00.00 sshd
9517 alexande 15 0 19416 2212 1628 S 0.0 0.2 0:00.01 bash 9550 root 16 0 19508 2272 1620 S 0.0 0.2 0:00.03 bash 9574 www-data 15 0 75600 1980 508 S 0.0 0.2 0:00.00 apache2
9575 root 20 0 23224 1856 1584 S 0.0 0.2 0:00.00 PassengerWatchd 9577 root 22 0 33308 3012 1904 S 0.0 0.3 0:00.40 PassengerHelper 9578 root 15 0 53944 16m 1588 S 0.0 1.6 0:00.60 ruby1.8
9582 nobody 15 0 71976 3696 2920 S 0.0 0.4 0:00.00 PassengerLoggin 9593 www-data 17 0 290m 4540 1812 S 0.0 0.4 0:00.04 apache2 11401 alexande 18 0 176m 100m 1956 S 0.0 9.8 0:48.31 ruby1.8
11747 root 15 0 9744 872 704 S 0.0 0.1 0:00.02 tail 13349 alexande 15 0 9744 864 704 S 0.0 0.1 0:00.06 tail 15560 root 15 0 47704 1796 1396 S 0.0 0.2 0:00.00 su
15622 root 15 0 19612 2376 1620 S 0.0 0.2 0:00.24 bash 15660 root 15 0 19076 1316 1048 R 0.0 0.1 0:04.84 top 19754 root 15 0 49248 1080 540 S 0.0 0.1 0:00.24 sshd
19755 messageb 15 0 23540 1168 792 S 0.0 0.1 0:00.44 dbus-daemon 19769 root 15 0 21064 888 680 S 0.0 0.1 0:00.32 cron 19770 root 15 0 20392 1636 816 S 0.0 0.2 0:00.21 syslog-ng
20465 root 19 0 58520 5124 2432 S 0.0 0.5 0:02.73 console-kit-dae 22385 root 16 0 79120 3476 2708 S 0.0 0.3 0:00.02 sshd 22440 alexande 15 0 79120 1692 888 S 0.0 0.2 0:00.53 sshd
22441 alexande 15 0 19416 2204 1624 S 0.0 0.2 0:00.00 bash 32126 root 16 0 79120 3476 2708 S 0.0 0.3 0:00.01 sshd 32204 alexande 15 0 79120 1688 888 S 0.0 0.2 0:00.04 sshd
32205 alexande 15 0 19420 2224 1632 S 0.0 0.2 0:00.06 bash 32323 alexande 15 0 9744 868 704 S 0.0 0.1 0:00.28 tail
*代码块有问题,不知道为什么。
答案1
内存膨胀的第二个嫌疑人:http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/
由于您的 uri 是 /categories,我假设您正在显示所有类别。如果类别数量巨大,而您要查询所有类别,则可能会导致内存中出现大量活动记录对象(但这只是猜测),并使进程大小不断增长。
你可以看看http://github.com/noahd1/oink追踪哪些对象被实例化最多
答案2
内存泄漏可能是第一个怀疑对象。