我们经常需要在两台主机之间传输大文件(超过 50 GB),并且传输速率似乎永远无法达到网络的预期吞吐量。有几个点,这可能是瓶颈,但他们的每一个中的理论上限是办法在实际的传输速率。这是一个典型的设置:
笔记本电脑 --> 802.11n --> AP --> CAT 6 电缆 --> 10/100 Mbits 路由器 --> 台式机
在这方面,瓶颈显然是路由器,它将传输速率限制在 100 Mbits/sec。即便如此,我也很少看到超过 9.5 MB/s 的传输速率(使用 scp),这代表 76 Mbits/sec,或仅理论最大限制的 76%。
接入点是否真的有 24% 的开销,或者是否有其他因素限制了速度?它可能是磁盘 I/O(尽管 SATA 的额定值为 1.5 Gbps),或者是磁盘和 NIC 之间主板上的任何东西(我如何测量?)。
有没有办法确定(*)知道瓶颈在哪里?如果我无法从 100 Mbps 路由器获得超过 76 Mbps 的速度,将网络升级到千兆位会增加吞吐量还是我仍会获得 76 Mbps,因为瓶颈在其他地方?
(*) 或至少以一种足以令人信服的方式让老板同意投资升级网络的一部分
我有一台运行 Ubuntu 服务器 10.04 的 24 核机器,内存为 94.6GiB。该机器正在经历高 %iowait,这与我们拥有(4 个内核)运行相同类型和数量的进程的另一台服务器不同。两台机器都连接到 VNX Raid 文件服务器,24 核机器通过 4 个 FC 卡连接,另一台通过 2 个千兆以太网卡连接。4 核机器目前优于 24 核机器,具有更高的 CPU 使用率和更低的 %iowait。
在 9 天的正常运行时间中,%iowait 平均为 16%,通常高于 30%。大多数时候 CPU 使用率非常低,大约为 5%(由于 iowait 高)。有充足的空闲内存。
我不明白的一件事是为什么所有数据似乎都通过设备 sdc 而不是直接通过数据移动器:
avg-cpu: %user %nice %system %iowait %steal %idle
6.11 0.39 0.75 16.01 0.00 76.74
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 1232 0
sdb 0.00 0.00 0.00 2960 0
sdc 1.53 43.71 44.54 36726612 37425026
dm-0 0.43 27.69 …Run Code Online (Sandbox Code Playgroud) 我有一个 LAMP 集群,它通过 NFS 共享文件,当神秘的刷新进程开始出现时,其中一个偶尔会被攻击一段时间。
谁能帮我?解决这个问题的唯一方法是重新启动 - 杀死进程只会产生新的进程。
top - 19:43:43 up 104 days, 4:52, 1 user, load average: 27.15, 56.72, 33.31
Tasks: 301 total, 9 running, 292 sleeping, 0 stopped, 0 zombie
Cpu(s): 15.6%us, 77.0%sy, 0.0%ni, 4.2%id, 2.0%wa, 0.0%hi, 1.2%si, 0.0%st
Mem: 8049708k total, 7060492k used, 989216k free, 157156k buffers
Swap: 4194296k total, 483228k used, 3711068k free, 928768k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
840 root 20 0 0 0 0 R …Run Code Online (Sandbox Code Playgroud) 我有一个 TileMill/PostGIS 堆栈在 OpenStack 云上的 8 核 Ubuntu 12.04 VM 上运行。这是一个非常相似的系统的重建,该系统上周在非常相似的硬件(相同的云,但不同的物理硬件,我相信)上运行良好。我试图重建与原来完全相同的堆栈(使用我构建的一些脚本)。
一切都在运行,但数据库执行查询的速度非常缓慢,这最终表现为非常缓慢的 tile 生成。一个示例查询(计算澳大利亚每个城镇半径内的酒吧数量),以前需要 10-20 秒,现在需要 10 多分钟:
explain (analyze, buffers) update places set pubs =
(select count(*) from planet_osm_point p where p.amenity = 'pub' and st_dwithin(p.way,places.way,scope)) +
(select count(*) from planet_osm_polygon p where p.amenity = 'pub' and st_dwithin(p.way,places.way,scope)) ;
Update on places (cost=0.00..948254806.93 rows=9037 width=160) (actual time=623321.558..623321.558 rows=0 loops=1)
Buffers: shared hit=132126300
-> Seq Scan on places (cost=0.00..948254806.93 rows=9037 width=160) (actual time=68.130..622931.130 rows=9037 loops=1)
Buffers: shared hit=132107781
SubPlan 1 …Run Code Online (Sandbox Code Playgroud) 我们的一个开发箱出现了一个问题,即性能偶尔会下降。发生这种情况时,您可以听到硬盘抖动的声音,但我不知道是什么原因造成的。
这发生在高磁盘访问期间(读取/写入多 GB 文件),但不是每次或整个磁盘访问期间。这些文件也经过严格的碎片整理,以防止似乎正在发生的那种“寻求颠簸”。
我怀疑问题在于系统的防病毒软件或某些我不知道的磁盘索引服务(AFAIK,没有任何运行,但是......)。不幸的是,我的 Performance Monitor-fu 非常非常弱(好吧,几乎不存在),我不知道如何确认/反驳我的怀疑或找出真正的罪魁祸首。
更新:
Process Explorer为我找到了罪魁祸首——Java 快速入门和 Windows 搜索服务。关闭前者对性能有显着影响,而关闭后者则产生巨大影响(尽管没有获得任何文件访问权限)。两者执行的磁盘访问量都是其他任何进程的 5-20 倍。
感谢你的帮助!
如果您想在运行 Mac OS X 的机器上跟踪性能问题并找出导致速度变慢的原因,您会使用哪些命令行或图形工具,以及如何使用它们?
我对关于最佳工具的建议以及如何使用它们的解释感兴趣 - 当机器变慢或死机时,我希望能够深入了解发生了什么,内存/磁盘/CPU-明智的。
谢谢。
我们最近将我们的 Web 服务器从一些使用了 10 年的机器迁移到了 AWS EC2。
现在站点的使用率更高(这是我们的旺季)并且站点变得慢得多,这是出乎意料的,因为我们的实例大小比以前大得多。
我们经营一个非常小的网站,一次只能获得几百人。我们正在运行一个c3.large我们的Web服务器实例,db.m1.large我们的RDS MySQL数据库。我们没有任何只读副本和/或多个网络服务器(负载平衡)。根据谷歌分析,我们一整天的页面浏览量只有 18,106 次。
我们的用户(外部和内部)一直在他们的浏览器中看到站点超时。它几乎是全面的,而不是任何特定的页面。MySQL PROCESS LIST 也几乎是空的,没有任何表锁或诸如此类的东西。
如果您查看我们在 CloudWatch 中的统计数据,一切都应该没问题。我们的 CPU 利用率非常高,而且我认为网络 I/O 非常低。同样在 RDS 方面,这里没有什么是“瓶颈”。
EC2 用法 (c3.large)

RDS 使用情况 (db.m1.large)

我应该如何解决此问题的任何想法?
performance bottleneck amazon-ec2 amazon-web-services amazon-rds
我试图找到运行一个相当繁忙的 php/mysql 站点的服务器的瓶颈。我的第一个罪魁祸首是 io 但 iostat 显示平均 iowait 仅消耗 %3.60 的 cpu 时间。这是发出 iostat 的完整结果:
avg-cpu: %user %nice %system %iowait %steal %idle
65.78 0.00 8.52 3.60 0.00 22.10
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 42.36 138.28 1754.70 408630278 5185216128
Run Code Online (Sandbox Code Playgroud)
所以我想知道iowait是否在可接受的范围内,如果不是,从SATA切换到SSD是否会大大减少它?
我需要安装一个混合星型 LAN 和级联 LAN 的 LAN。有两个级别(我的意思是从中央交换机到最外部交换机的最大链接数是 2 根电缆),“中央”交换机(连接到所有其他第一级交换机)是 NetGear ProSafe 8800 系列6 槽机箱。它通过 10 Gbps 电缆连接到一级交换机,并且它们的带宽大于 10 Gb。
中央开关应连接到同一个路由器外网,我已经看到了这台路由器,但我的大疑问是关于DRAM,这是只有1/2 GB。因此,如果与其相连的交换机的带宽远大于 2 GB,路由器会成为瓶颈吗?
我计划创建一个包含大量动态内容的网站,并且想知道对于我的 webstack 的一部分来说最明智的选择是什么。
现在我正试图决定我是应该在 nginx 上开发,使用 PHP 来传递动态内容,还是使用 nginx 作为 Tomcat 的代理并使用 servlet 来传递动态内容。
我在 Java、JSP 和 servlet 方面有丰富的经验,所以这是一个加分项。此外,由于它是一种编译语言,因此它的执行速度比 PHP 快(这里暗示Java 比 PHP 快 37 倍左右),并且可以更快地创建网页。
我没有使用 PHP 的经验,但是我的印象是它很容易上手。它比 Java 慢,但由于客户端只与 nginx 通信,我认为 以这种方式为客户端提供动态创建的网页会更快。
考虑到这些事情,我想知道:
我不介意学习 PHP,如果最终它会给我最好的性能。我只是想知道从这个角度来看什么是最好的选择。
基本上我想知道是否可以通过使用像鱿鱼这样的缓存来加速我的服务器,检查配置中可能的错误,优化各种服务器软件参数等。
如果我知道服务器的 ping 时间和时钟速度以及其他硬件参数,是否可以预测提供 1MB 数据的时间。
例如,在我的情况下,我有 1GHz AMD 和 75ms ping,我在 0.6 秒内从核心内存获得 16 kB 页面 - 我可以让它更快吗?-只是在无负载时显示页面的简单时间。
是否存在用于此目的的任何基准/工具?
编辑我试过添加鱿鱼,但根本没有获得任何性能提升。
谢谢。
bottleneck ×11
performance ×6
io ×3
bandwidth ×2
amazon-ec2 ×1
amazon-rds ×1
benchmark ×1
centos ×1
diagnostic ×1
hardware ×1
iostat ×1
iowait ×1
java ×1
linux ×1
mac-osx ×1
mysql ×1
nfs ×1
nginx ×1
perfmon ×1
php ×1
postgis ×1
postgresql ×1
router ×1
switch ×1
tomcat ×1
ubuntu-10.04 ×1
windows-xp ×1