Articles of 性能

如何[礼貌地告诉软件供应商他们不知道他们在说什么

不是一个技术性的问题,而是一个有效的问题。 场景: 带有2个8核Xeon E5-2667 CPU和256GB RAM的HP ProLiant DL380 Gen 8,运行ESXi 5.5。 给定供应商系统的八个虚拟机。 四台虚拟机用于testing,四台虚拟机用于生产。 每个环境中的四个服务器执行不同的function,例如:Web服务器,主应用程序服务器,OLAP DB服务器和SQL DB服务器。 CPU共享configuration为阻止testing环境影响生产。 SAN上的所有存储。 我们对性能有一些疑问,供应商坚持要给生产系统更多的内存和vCPU。 但从vCenter可以清楚地看到,现有的configuration还没有被触及,例如:主应用服务器的CPU利用率每月查看率在8%左右,奇数高达30%。 高峰往往与备份软件踢进一致。 RAM上的类似故事 – 服务器上的最高利用率数据是〜35%。 因此,我们一直在使用Process Monitor(Microsoft SysInternals)和Wireshark进行挖掘,我们向厂商推荐的是他们首先进行了一些TNS调优。 但是,这是不言而喻的。 我的问题是:我们如何让他们确认我们发送给他们的VMware统计数据足以certificate更多的RAM / vCPU不能提供帮助? —更新12/07/2014 — 有趣的一周。 我们的ITpipe理层已经表示,我们应该改变虚拟机的分配,现在我们正在等待业务用户的停机。 奇怪的是,商业用户是说,应用程序的某些方面运行缓慢(相比之下,我不知道),但他们会“让我们知道”什么时候我们可以采取系统(抱怨,发牢骚!)。 另外,系统的“慢”方面显然不是HTTP(S)元素,即: 大部分用户使用的“瘦应用程序”。 这听起来像是主要金融机构使用的“胖客户”,显然是“慢”。 这意味着我们正在考虑调查中的客户端和客户端 – 服务器交互。 由于这个问题的最初目的是为了寻求帮助,是否要去“捅它”的路线,或者只是做出改变,而现在我们正在做出改变,我会用龙的答案closures它。 谢谢大家的意见。 像往常一样,serverfault已经不仅仅是一个论坛 – 它也像一个心理学家的沙发一样:-)

如何在两台服务器之间快速复制大量文件

我需要在两个服务器(Ubuntu)之间传输大量的mp3。 巨大的我的意思是大约一百万个文件平均30万。 我试着用scp但是大概需要一个星期。 (约500 KB / s)如果我通过HTTP传输单个文件,我得到9-10 MB / s,但我不知道如何传输所有这些文件。 有没有办法快速转移他们所有的人?

什么限制了Linux服务器上的最大连接数?

什么内核参数或其他设置控制可以在Linux服务器上打开的最大TCP套接字数量? 允许更多连接的权衡是什么? 我注意到,当使用ab加载testingApache服务器时,很容易使服务器上的打开连接最大化。 如果离开ab的-k选项,允许连接重用,并且发送超过大约10,000个请求,那么Apache服务于前11,000个请求,然后停止60秒。 查看netstat输出,在TIME_WAIT状态下显示11,000个连接。 显然,这是正常的。 即使在客户端完成TCP连接可靠性原因之后,连接仍保持打开默认状态60秒。 看起来这将是一个简单的方法来做一个服务器,我想知道通常的调音和预防措施是什么。 这是我的testing结果: # ab -c 5 -n 50000 http://localhost/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Completed 10000 requests apr_poll: The timeout specified has […]

为什么在Xen下TCP接受()性能如此糟糕?

在Xen下,我的服务器可以接受()新的传入TCP连接的速率真的很糟糕。 裸机硬件上的相同testing显示3-5倍的加速。 Xen在Xen下如此糟糕? 你可以调整Xen以提高新TCP连接的性能吗? 还有其他虚拟化平台更适合这种用例吗? 背景 最近我一直在研究在Xen下运行的内部开发的Java服务器的性能瓶颈。 服务器会说HTTP并回答简单的TCP连接/请求/响应/断开连接呼叫。 但即使在向服务器发送stream量时,每秒钟也不能接受超过约7000个TCP连接(在一个8核EC2实例,运行Xen的c1.xlarge上)。 在testing期间,服务器也performance出奇怪的行为,其中一个核心(不一定是cpu 0)非常负载> 80%,而其他核心几乎空闲。 这使我认为这个问题与内核/底层虚拟化有关。 当在裸机上testing相同的场景时,我得到的testing结果显示TCP接受速率超过35000 /秒。 在一台运行Ubuntu的Core i5 4核心机器上,所有内核几乎全部饱和。 对我来说,这种数字似乎是正确的。 再次在Xen实例上,我已经试过启用/调整几乎sysctl.conf中的所有设置。 包括启用接收数据包转向和接收stream量转向 ,并将线程/进程固定到CPU,但没有明显的收益。 我知道虚拟化运行时性能会下降。 但是到了这个程度? 速度较慢的裸机服务器性能优于虚拟化技术。 8核的系数是5? 这真的是Xen的预期行为? 你可以调整Xen以提高新TCP连接的性能吗? 还有其他虚拟化平台更适合这种用例吗? 重现这种行为 当进一步调查和指出问题时,我发现netperf性能testing工具可以模拟我遇到的类似情况。 使用netperf的TCP_CRRtesting我收集了来自不同服务器(虚拟化和非虚拟化)的各种报告。 如果您想提供一些调查结果或查看我目前的报告,请参阅https://gist.github.com/985475 我怎么知道这个问题不是由于写得不好的软件造成的? 该服务器已经在裸机硬件上进行过testing,并且几乎饱和了所有可用的内核。 当使用保持活动的TCP连接时,问题就会消失。 为什么这很重要? 在ESN (我的雇主),我是用Java编写的Comet / Web Socket服务器Beaconpush的项目负责人。 即使它性能非常好,在最佳条件下几乎可以使任何带宽达到饱和,但仍然限于新的TCP连接速度。 也就是说,如果用户stream失频繁,那么很多TCP连接将不得不build立起来。 我们尽量减less这种保持连接的活力。 但最后,accept()的性能是让我们的内核不能旋转,我们不喜欢这样做。 更新1 有人把这个问题发给了黑客新闻 ,那里也有一些问题/答案。 但是,我会尽量保持这个问题的最新信息,随着我的发现。 硬件/平台我已经testing了这个: EC2,实例types为c1.xlarge(8核,7 GB RAM)和cc1.4xlarge(2x Intel […]

networking现在比磁盘更快吗?

这是一个软件devise问题 我曾经为了速度而遵循以下规则 cache memory > memory > disk > network 每一步是前一步的5-10倍(例如,高速缓冲存储器比主存储器快10倍)。 现在看来,千兆以太网的延迟比本地磁盘less。 因此,从大型远程内存数据库中读取的操作可能比本地磁盘读取要快。 对于像我这样的老朋友,这种感觉就像是异端邪说。 (我只是花了一些时间在磁盘上build立一个本地caching,以避免必须做networking往返 – 因此我的问题) 有人在这方面有经验/数字/build议吗? 是的,我知道,唯一真正的方法是build立和测量,但我想知道一般规则。 编辑 : 这是来自顶级答案的有趣数据: 往返同一数据中心500,000 ns 磁盘寻道10,000,000 ns 这对我来说是一个震撼。 我的心理模型是networking往返本身就很慢。 而不是 – 比磁盘“往返”快10倍。 Jeff attwood在http://blog.codinghorror.com/the-infinite-space-between-words/上发表了这个v好博客。

FreeBSD性能调优:Sysctl参数,loader.conf,内核

我想通过sysctl.conf / loader.conf / KENCONF /等来分享有关FreeBSD调优的知识。它最初是基于Igor Sysoev(nginx的作者)关于FreeBSD调优高达100,000到200,000个活动连接的介绍。 较新版本的FreeBSD可以处理更多。 调优适用于FreeBSD7 – FreeBSD-CURRENT。 自7.2和64以来,其中一些默认情况下调整良好。 以前的7.0有一些只是启动(通过/boot/loader.conf设置)或根本不存在。 sysctl.conf : # No zero mapping feature # May break wine # (There are also reports about broken samba3) #security.bsd.map_at_zero=0 # Servers with threading software apache2 / Pound may want to rise following sysctl #kern.threads.max_threads_per_proc=4096 # Max backlog size # Note Application […]