我们有一个相当大的MSMQ环境设置,今天决定停下来。 (在vSphere 4.0 Update 1下,一切都是虚拟机) 有8个networking服务器从networking上的客户端接收数据。 这些机器都安装了MSMQ,只需将MSMQ消息发送到主MSMQ服务器即可。 消息当前堆积在出站队列中。 这些机器是Windows 2008 Web版,具有2 Gig的RAM和2个vCPU。 我们有一个群集MSMQ服务器(Windows群集服务器),它从8个Web服务器获取消息。 队列中的数据量没有限制。 硬盘是50 Gig,有46 Gig的可用空间。 这些机器是具有8G内存和4个vCPU的Windows 2008企业版。 曾经有2个vCPU但CPU负载达到100%的集群,所以我把Windows集群的两个节点都增加到了4个vCPU。 有4个应用程序服务器从队列中读取消息并处理它们。 通常这一切都完美,但不是今天。 今天早上一切运行非常缓慢。 这8台networking服务器目前在出站队列中显示多达300k条消息。 群集服务器当前在队列中显示了超过一百万条消息(有些低至200k)。 如果我在8个Web服务器上查看perfmon,它会显示我平均每秒发送2个消息。 如果我查看群集上的perfmon,则会显示每秒大约7条消息进入群集。 正在读取的机器每个都没有收到许多消息。 最快的服务是每秒收到10-12条消息,最慢的是显示0或1。 最近唯一的变化是我们将前端Web服务器的数量从4个更改为8个。大约两个星期前我们做了这个没有问题。 星期二我们给他们打电话,看看剩下的4个怎么处理这个负载。 星期三我们把这四台新机器重新打开了。 群集上的磁盘显示非常低的IO并且没有排队。 为了安全起见,我已经将PowerPath更新到最新版本,但是这没有任何帮助。 8个Web服务器位于一个vLAN上,Cluster'd服务器和应用程序服务器位于另一个vLAN上。 vLAN之间没有防火墙。 在任何机器上的应用程序或系统日志中没有任何用处。
我们有一个由两个节点组成的Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt群集。 每个节点使用以下软件包/版本运行Ubuntu 12.04 64位: 内核3.2.0-32-generic#51-Ubuntu SMP DRBD 8.3.11 qemu-kvm 1.0 + noroms-0ubuntu14.3 libvirt 0.9.13 起搏器1.1.7 心跳3.0.5 虚拟客户端正在运行Ubuntu 10.04 64位和Ubuntu 12.04 64位。 我们使用libvirtfunction将主机CPU的function传递给虚拟客户机,以实现最佳的CPU性能。 现在这是这个集群上的一个常见设置: 虚拟机“监控”有4个vCPU 虚拟机“监控”使用ide作为磁盘接口(我们目前正在切换到VirtIO,原因很明显) 我们最近跑了一些简单的testing。 我知道他们不专业,没有达到高标准,但他们已经显示出强大的趋势: 节点A正在运行VM“bla”节点B正在运行VM“监视” 当我们从虚拟机“bla”到虚拟机“监视”rsync的文件,我们只达到12 MB /秒。 当我们在虚拟机“监控”内部执行一个简单的dd if / dev / null = / tmp / blubb时,我们可以达到30 MB / s左右。 […]
我在OpenStack云上的8核心Ubuntu 12.04虚拟机上运行了TileMill / PostGIS堆栈。 这是一个非常相似的系统的重build,上周在非常相似的硬件(相同的云,但不同的物理硬件,我相信)上运行良好。 我试图重build堆栈完全一样(使用我已经build立的一些脚本)。 一切都在运行,但是数据库正在慢慢地进行查询,这最终performance为非常缓慢的瓦片生成。 一个示例查询(计算澳大利亚每个城镇半径内的酒吧数量),之前花费了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 […]
什么样的优化(性能或其他),当你使用IIS(在Windows 2003)? 目前,我使用每个网站1个应用程序池,但我认为我可以做更多:)
关于IOPS,我在网上看到了几个来源,提示给定数量磁盘的IOPS仅仅是单个磁盘的IOPS乘以磁盘的数量。 如果我对IOPS的理解是正确的(而且我一点都不确定),那么我会认为现实将取决于RAID级别,其中包括许多其他因素。 使用RAID 1/10时,所有数据都至less被复制到两个磁盘上,从而减less某些IO模式在特定磁盘上的争用。 但是,在条带化的RAID级别(如RAID 0/5/6)中,数据是分布式的而不是重复的,这意味着连续的读取请求可能针对同一个主轴,从而导致在前一个IO完成时阻塞。 写作甚至更有争议。 我还要补充一点,我认识到,由于各种优化和其他因素,现实情况要复杂得多。 我的问题实际上只是在一个非常基本的层面上,即我是否理解IOPS意味着什么是正确的。 这可能是因为我认为IOPS甚至会受到RAID级别的影响,这说明对这个概念有一个基本的误解。
有没有Linux的软件使用SSD作为磁盘caching? 我相信Sun在ZFS上做了这样的事情,虽然不太清楚。 快速search没有提供任何合适的。 目标是将经常请求的文件放在SSD上。 由于固态硬盘比硬盘具有更多的容量,而且硬盘性能更好,性能更好,所以这应该可以提高性能。
我经常保存并稍后恢复一个用于testing的小型PostgreSQL数据库。 其数据由于testing而定期更新,然后必须进行新的转储,并定期使用转储重新创build处于明确定义状态的数据库。 我注意到,转储(使用pg_dump -Fc database )只需要几秒钟,但恢复( pg_restore -d database )大约需要一分钟。 这似乎很奇怪。 我可以预料,两者都需要大致相同的时间(假定这两个任务都是I / O绑定的)。 还原有问题吗? 我可以让它更快吗? 或者恢复花费的时间比转储还要正常吗? (如果是,那为什么?) 转储文件通常有大约3-4 MiB; DBMS是PostgreSQL V8.4,运行在Pentium4 3GHz,在Ubuntu Linux下有1GiB RAM。
当我的Windows Server 2008 R2计算机正在执行任何大型磁盘操作时(将10GB文件从一个驱动器复制到另一个驱动器,通过networking复制类似的文件,合并HyperV快照,压缩大文件),整台计算机的性能变得非常慢,一切都变得没有反应。 这在任何情况下都很明显,当磁盘访问足够大而不能放入caching时。 有没有可用于调整此行为的设置? 我可以接受较慢的文件传输,如果这会给我更多的响应。 系统详细信息:戴尔Optiflex 960,酷睿2四核Q9650,8GB内存,2个SATA驱动器 – 320GB(ST3320418AS)和1TB(ST31000528AS),NCQ同时工作,Intel 82564LM-3千兆以太网,ATI HD 3450显卡,Intel ICH10桥接器。 我们有这样的多台机器,每一台都performance出相同的行为。 我虽然这是一个工作站矫枉过正,显然我错了。 更新:我想我应该没有提到HyperV。 上述configuration是我工作的公司的标准工作站设置,这不是任何types的服务器。 我至多有3个虚拟机工作,通常我是唯一访问它们的人。 即使在没有虚拟机运行的情况下,速度也会降低。 在Linux机器上,我只是简单的复制过程,我可以忘记它,有什么办法来pipe理Windows上的IO优先级?
好吧,首先,让我说我不是一个操作人员,而是一个开发人员。 所以我在这里进入一个未知的土地,所以请忍受我。 我想使用Azure虚拟机从1.9 GB的zip文件中提取50 GB的XML文件。 所以我一直在testingAzure上的哪个实例大小,以便获得更好的性能,同时不会超出我的需要。 然而,Azure虚拟机的磁盘性能并不是很好,我想知道是我做错了什么,或者如果我的结果是可以预料的。 首先,我一直在testing什么? 我有一个自定义的.NET控制台应用程序,它只是将一个zip文件作为参数,然后立即开始将zip文件解压缩到zip文件所在的相同目录中。解压缩过程中,应用程序计算有多less兆字节应用程序每秒都写入目标文件并输出。 在我的本地开发机器上,我用这个应用程序获得了非常好的性能,编写160-210 MB / s。 所以整个提取过程大约需要8分钟。 我的本地机器的规格是英特尔酷睿i7 950,3 GHz,4核心(8逻辑),12 GB内存,三星SSD 830系列250 GB。 好的,所以我开始testing不同的实例大小,这是我的结果。 在带有Windows Server 2012 Datacenter R2(8核,14 GB RAM)的A4实例上,使用同一个存储帐户的4个虚拟磁盘的条带化RAID,无需主机caching,我可以稳定的30-35 MB / s,这意味着整个提取花了24分48秒。 我也尝试启用主机caching,但它并没有真正有所作为。 在使用Windows Server 2012数据中心(8核,28 GB RAM,500 GB本地SSD磁盘)的D4实例上,我在第一分钟内获得了非常好的性能(150 MB / s),然后在200 MB / s和山谷在9 MB / s。 平均性能在70到100 MB / s之间。 提取花了9分40秒。 在使用Windows Server 2012 […]
我build立了一个由4 * 2 TB磁盘组成的Linux软件raid level 5。 磁盘arrays是用64k条带大小创build的,没有其他configuration参数。 初始重build后,我试图创build一个文件系统,这一步需要很长时间(大约半小时或更长)。 我试图创build一个xfs和ext3文件系统,都花了很长时间,与mkfs.ext3我观察到以下行为,这可能会有所帮助: 写inode表运行速度很快,直到达到1053(〜1秒),然后写入约50,等待2秒,然后写入下一个50(根据控制台显示) 当我试图用Control + C取消操作时,它会挂起半分钟,然后才会被取消 单独的磁盘性能非常好,我已经分别运行bonnie ++,写入/读取值约为95 / 110MB / s。 即使我在每个驱动器上并行运行bonnie ++,值也只能减less大约10 MB。 所以我通常排除硬件/ I / O调度作为一个问题来源。 我尝试了不同的configuration参数stripe_cache_size和readahead大小没有成功,但我不认为它们是相关的文件系统创build操作。 服务器详细信息: Linux服务器2.6.35-27-generic#48 -Ubuntu SMP x86_64 GNU / Linux mdadm – v2.6.7.1 有没有人有如何进一步debugging这个build议?