我正在使用 apache ab 对我的站点进行基准测试,我注意到在服务器上运行 ab 和在客户端远程运行 ab 时,响应时间有很大差异。
那么在服务器上运行ab和远程运行ab最大的区别是什么。网络运输消耗的时间是多少?
我正在使用 apache ab 对我的站点进行基准测试,我注意到在服务器上运行 ab 和在客户端远程运行 ab 时,响应时间有很大差异。
那么在服务器上运行ab和远程运行ab最大的区别是什么。网络运输消耗的时间是多少?
哪个是存储网站大量静态媒体文件(正常文件大小:图像10KB-2M,视频文件5M-500M)的最佳选择?(在这些分布式并行容错文件系统中)
我听说过一些分布式文件系统,比如 Gluster 和 Moose。有没有我不知道的更好的想法?
更新:
==================================================== ============== 我终于找到了oprofile的原因。这是因为 Symfony 的路由缓存。我们有很多具有不同 url 的页面,symfony 将它们缓存在一个文件中(序列化数据)。所以缓存文件变大了,需要更多的 CPU 来序列化和反序列化数据。
禁用路由缓存后一切顺利
==================================================== ===============
最近我在我的网络服务器(Centos 5.3 + PHP 5.2.6)上更新了我的 PHP 程序,但它给我的服务器带来了沉重的负担。所以我决定使用 oprofile 来找出是什么让我的服务器变慢了。
我已经成功安装了 oprofile 但接下来是什么?有没有人有调整apache服务器的实际经验?
谢谢~
更新:
==================================================== ============== 我终于找到了oprofile的原因。这是因为 Symfony 的路由缓存。我们有很多具有不同 url 的页面,symfony 将它们缓存在一个文件中(序列化数据)。所以缓存文件变大了,需要更多的 CPU 来序列化和反序列化数据。
禁用路由缓存后一切顺利
==================================================== ===============
我们有三台带有 LVS(Apache 2.11 + PHP 5.26)的 Web 服务器,我们使用 Symfony 1.0 进行产品开发。
但是最近我们用 Symfony 1.2.7 更新了我们的产品,我们遇到了一个严重的性能问题。
我们使用 Ganglia 来监控我们的服务器。更新前,Web 服务器的平均负载低于 1。更新后,负载急剧增加,最高负载为 80(我可以看到来自 Ganglia 的 CPU 使用率增加了很多)。
我找不到原因。是因为 Symfony 框架吗?(但根据 Ganglia 的说法,负载不应该增长得这么快)。
顺便说一句,在我们的新产品中,大量使用了 AJAX,这意味着打开一个页面至少有 5-7 个 PHP 请求。这是原因吗?
谁能帮我找出所有可能的原因?或者我还应该提供什么信息来诊断?
先谢谢了,期待你的回复~
我有一个在 CentOS 5.3 上运行的服务器(一个彗星聊天服务器,会有很多 tcp 连接)。最近我发现它非常慢(http 服务和 ssh)所以我使用“ifconfig”命令来弄清楚发生了什么。
eth0 Link encap:Ethernet HWaddr 00:1C:C0:B5:D5:EA
inet addr:10.0.0.61 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::21c:c0ff:feb5:d5ea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:871861 errors:0 dropped:489662344145 overruns:0 frame:0
TX packets:639044 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:207239658 (197.6 MiB) TX bytes:169416201 (161.5 MiB)
Interrupt:225 Base address:0x6000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:44497 errors:0 dropped:0 overruns:0 frame:0
TX packets:44497 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:11470951 (10.9 MiB) TX bytes:11470951 (10.9 MiB)
当我重新启动它的网络时,一切顺利。但过一段时间又会变慢。
有人可以帮忙吗?
更新:
==================================================== ===============================
根据 Rajat 的要求,我将发布一些诊断信息
uname -a
Linux im.cluster.myserver.com 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
sudo /sbin/lspci | grep Ethernet
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
sudo dmesg | grep eth0
eth0: RTL8168d/8111d at 0xffffc20000006000, 00:1c:c0:b5:d5:ea, XID 281000c0 IRQ 225
r8169: eth0: link up
r8169: eth0: link up
eth0: no IPv6 routers present
r8169: eth0: link up
eth0: no IPv6 routers present
sudo /sbin/ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: p
Current message level: 0x00000033 (51)
Link detected: yes
sudo /sbin/ethtool -k eth0
Offload parameters for eth0:
Cannot get device udp large send offload settings: Operation not supported
rx-checksumming: on
tx-checksumming: off
scatter-gather: off
tcp segmentation offload: off
udp fragmentation offload: off
generic segmentation offload: off
sudo /sbin/ethtool -S eth0
NIC statistics:
tx_packets: 4483119
rx_packets: 7443820
tx_errors: 0
rx_errors: 0
rx_missed: 0
align_errors: 0
tx_single_collisions: 0
tx_multi_collisions: 0
unicast: 3591906
broadcast: 442720
multicast: 3851914
tx_aborted: 0
tx_underrun: 0
这是一个大问题:)我们正在运行一个 LAMP 不大的网站,5 个具有 LVS 负载平衡的 Web 服务器,3 个具有复制和读写分离的 MySQL 服务器,我们使用 Memcached 进行缓存和一些全文搜索工具。到目前为止,它运行良好,因为我们目前没有大量流量。
但是当用户快速增长时,我们将不得不扩展我们的架构以满足需求。也许会引入分布式文件系统和数据库(以及并行计算?),以及一些集群和维护技术(如 Gearman 和 Pshell)。
网上有一些文章我可以浏览一下。但我确实需要一些实践经验来切实有效地为这个问题做准备。