Articles of 性能调优

我怎么知道哪个页面正在创build一个高CPU负载的httpd进程?

我有一个LAMP服务器(基于CentOS的MediaTemple(DV)至尊2GB内存)运行一个自定义的WordPress的+ bbPress组合。 每天大约有30k的浏览量,服务器开始呻吟。 今天早些时候大约5分钟,当时有大量的车stream。 即使在正常情况下,我可以看到虚拟服务器有时在90%+ CPU负载。 使用顶部我经常可以看到5-7个httpd进程,每个进程都使用15-30%(有时甚至是50%)的CPU。 在我们做一个大的优化传递(我们使用MySQL可能是罪魁祸首)之前,我希望find主要的犯罪者页面并首先处理它们。 有没有一种方法可以找出哪些特定的请求负责最耗尽CPU的httpd进程? 一般来说,我发现了很多关于优化的信息,但在这个特定的问题上没有任何信息。 其次,我知道有一百万个variables,但是如果您对于是否应该在具有这种大小的站点的单个专用虚拟服务器的性能边界上有任何了解,那么我很乐意听取您的意见。 我们应该考虑转向更强大的服务器,还是应该专注于当前服务器的优化?

taskset和cpuset之间的区别

我试图减less我的Linuxnetworking应用程序的延迟。 我已经了解到有两个工具可以将程序“绑定”到特定的CPU核心:taskset和cpuset。 我应该select哪一个? 他们是否相当于一个较低的水平? (configuration)我的应用程序有单线程,应该通过快速LANnetworking处理单个TCP连接(无需重新连接),延迟最less。 我是否正确?

硬盘速度:RPM与caching

当试图select一个SATA磁性硬盘驱动器(不是SSD)来实现随机和线性访问的高性能时,这应该是主要因素? 例如:具有16MBcaching的10k RPM驱动器的性能要优于具有32MBcaching的7200RPM驱动器

在3G移动networking上iPhone客户端遇到的服务有哪些TCP调优技巧?

我是一个开发者,他有一个很好的devise一个networking服务的不好的情况,很难被iPhone客户打到。 iPhone应用程序在过去一年的下载量超过了10MM,现在我正在把用户在线上互相交stream。 我想调整将承载我的基于TCP的networking服务的服务器的TCP实现。 每个请求的大小发送将是“小”(比如<256字节)。 好吧,你知道了,这是一个游戏服务器(令人震惊)! 仅供参考,对于这种特殊的服务,我不感兴趣UDP(或UDP上的可靠层,例如ENet和RakNet),因为游戏不像Quake一样; 所有的数据包都必须可靠地接收,这就是TCPdevise的。 因此,iPhone客户端和服务之间的连接将是“长久的”(尽可能多 – 隧道和电梯被诅咒!)。 仅供参考,我在运行Linux 2.6.18-164.9.1.el5的服务器上运行100Mbps上行链路上的服务。 我的目标是同时: 保持尽可能低的延迟; 和 尽量减less每个连接的客户端使用的内存量。 有大量的TCP相关的旋钮来调整! 经过一些基础研究之后,似乎大多数人都build议保持原样。 但是,有一些设置似乎应该针对特定情况进行调整。 我知道这有点模糊,这就是为什么我要求帮助。 需要考虑的事情是,尽可能减less内存,尽量减less片状networking上的小请求/响应,这可能是: 内存可用于TCP / IP实现 设置“nodelay”选项(禁用Naglealgorithm,因为这是一个半实时游戏服务器) 拥塞控制algorithm 等等(还有什么?) 考虑TCP 拥塞控制algorithm : reno:几乎所有其他操作系统使用的传统TCP 立方体:CUBIC-TCP bic:BIC-TCP htcp:Hamilton TCP 维加斯:TCP维加斯 westwood:针对有损networking进行了优化 我的服务器默认为bic,其目标是devise一个协议,可以在高速长距离networking中将性能提高到每秒几十吉比特,同时保持强大的公平性,稳定性和TCP友好性。 韦斯特伍德听起来更合适,因为它旨在更好地处理大带宽延迟产品path(大型pipe道),由于传输或其他错误(泄漏pipe道)造成的潜在分组丢失,以及dynamic负载(dynamic负载pipe道)”。 我在这里太深了,还是这个课程的标准? 什么types的东西你们一般调整TCP / IP? 怎么样? 有什么规则可以知道? 你对我的个案有什么智慧的话? 非常感谢!

什么是用于移动设备的最佳TCP拥塞algorithm?

鉴于目前可用的大量TCPalgorithm和基于Linux的移动设备的兴​​起,什么是理想的algorithm要考虑? 从各种实现的阅读,Veno和Westwood +看起来很有趣,但我有兴趣了解真实的数据。

提高OpenVPN性能

我一直在努力提高我的OpenVPN性能,这是我目前的设置: cat /etc/openvpn/server.conf port 443 #- port proto tcp #- protocol dev tun #tun-mtu 1500 tun-mtu-extra 32 #mssfix 1450 tun-mtu 64800 mssfix 1440 reneg-sec 0 ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login #plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS #plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line […]

了解RedHat推荐的调整configuration文件

我们将在〜1000台服务器上推出调优(和numad),其中大部分是NetApp或3Par存储上的VMware服务器。 根据RedHats文档,我们应该selectvirtual-guestconfiguration文件。 它在做什么可以在这里看到: tuned.conf 我们正在将IO调度程序更改为NOOP,因为VMware和NetApp / 3Par都应该为我们做足够的调度。 然而,经过调查了一下,我不知道为什么他们增加了vm.dirty_ratio和kernel.sched_min_granularity_ns 。 据我了解越来越多的vm.dirty_ratio增加到40%将意味着对于一个20GB内存的服务器,除非vm.dirty_writeback_centisecs被命中,否则8GB在任何时候都可能是脏的。 而在刷新这些8GB的应用程序的所有IO将被阻塞,直到脏页被释放。 增加dirty_ratio可能意味着更高的写入性能达到峰值,因为我们现在有更大的caching,但是当caching填充IO时将会被阻塞相当长的时间(几秒)。 另一个是为什么他们增加了sched_min_granularity_ns 。 如果我理解正确,增加这个值会减less每个时期的时间片数量( sched_latency_ns ),这意味着运行的任务将会有更多的时间来完成他们的工作。 我可以理解这对于线程很less的应用程序来说是一件好事,但对于例如。 Apache或其他进程有很multithreading会不会适得其反?

W2K3E上的系统CPU使用率中出现不明原因的周期性峰值

我们有一台运行自定义工作负载的Windows 2003 R2 Enterprise 64位服务器,这个服务器存在性能问题。 下面的削减版本遭受较小的驼峰,但它的质量是相同的。 我们已经把它简化为一个简单的小应用程序,无非是: 听一个sockets join一个多播组 监听那个组里的数据包 读取和丢弃数据包 testing应用程序本身是Boost ASIO多播接收器示例的一个稍微修改版本,所以没有多less应该是错误的。 下面的实际代码(!)… 每当在负载下运行这个程序的时候,这个进程的CPU就会在内核代码中发生所有的处理: (此处仅显示CPU 6,在此testing期间(3小时17分钟)所有其他处理器都处于空闲状态) 从图中可以看出,当负载峰值冲击时,所有的处理时间都发生在内核代码中。 花费的时间主要用于延迟程序调用(最大16.8%)和处理中断(最大8.5%)。 看起来有一些延迟清理发生,但我们不知道它可能是什么。 只要我们可以告诉它只在W2K3E-64上发生。 它发生在不同的硬件上(HS21,HS22,HS22V,HP DL380)。 在Windows 2008上运行testing应用程序可以将问题显示得更小(更多的是更小的峰值)。 我们如何解决这个问题,或者我们应该在下一步看看? 实例中的实际代码: void handle_receive_from(const boost::system::error_code& error, size_t bytes_recvd) { if (!error) { ++m_receivedPackets; m_receivedBytes += bytes_recvd; m_last64TotalBytes += bytes_recvd; if ( ( m_receivedPackets & 0x3F ) == 0 ) { […]

最适合高负载的sysctl.confconfiguration – 非常繁忙的内容stream服务器

什么是高负载,非常繁忙的内容stream媒体服务器最好的sysctl.confconfiguration? 服务器从亚马逊,s3等远程服务器获取内容,然后使用phpdynamic地将内容stream式传输到用户,而不必将其保存到硬盘上。 PHP使用CURL来获取文件,然后使用flush()来同步stream式传输,所以没有太多的硬盘工作…只有networking和带宽。 该服务器是四核心Xeon,具有1Gbit全双工NIC,8GB内存和500GBx2的RAID。 服务器内存使用情况和CPU负载相当低。 我们正在运行debian lenny和lighttpd2(是的,我知道它还没有发布:-))与PHP 5.3.6和PHP的FastCGI与spawn-FBCG绑定在4个不同的Unixsockets,每个20个孩子。 最大fcgi请求数为20,使用lighttpd2configuration中的mod_balancer模块来平衡SQF(短队优先)configuration中这4个套接字之间的fastcgi请求。 我们的服务器使用了大量的带宽,即networking连接一直很忙。 在100到200个并行连接之后,服务器开始减速并最终变为无响应,开始发出连接超时错误。 当我们有cPanel的时候,我们从来没有超时的错误,所以它不能成为一个脚本问题。 它必须是networkingconfiguration问题。 lighttpd2configuration:工作进程= 8,保持活动请求为32,保持活动空闲超时时间为10秒,最大连接数为8192。 我们目前的sysctl.conf内容是: net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_tw_recycle = 1 # Increase maximum amount of memory allocated to shm kernel.shmmax = 1073741824 # This will increase the amount of memory available for socket input/output queues net.ipv4.tcp_rmem = 4096 25165824 25165824 net.core.rmem_max = 25165824 […]

更快的IMAP在Linux上searchCourier IMAP服务器

我正在寻找使用Courier IMAP提高IMAPsearch性能的提示。 目前的版本是4.2.1。 与“ 快速searchIMAP? ”这个问题不同,我正在寻找服务器端的改进。 在相当大的账户上访问性能已经相当不错,但search速度很慢。 是否有某种工具/插件可用于为各种有趣的邮件字段生成良好的索引?