Articles of 性能调优

我可以使用什么程序来评估networkingstream量?

可能重复: 如何testing两点之间的真实networking吞吐量? 如果两台计算机通过某种networking接口连接,是否有一种标准的工具被同行评审的期刊上发表的学术人员用来衡量整个界面的性能?

MySQL设置 – 使用可用的资源

我有很多处理工作需要在MySQL服务器上运行。 我已经在Win 2008 64bit上安装了mysql 5.1.45-community。 它运行在至强处理器上,3ghz 6处理器,8G内存。 看起来我运行的查询(或同时运行的数字)似乎并不重要,但是当我查看任务pipe理器时,我会看到一个处理器100%出来。 另外5个是偶像。 内存是1.54 gig静态。 当我安装MySQL时,我使用了向导,并select了默认的“服务器”(不是工作站)选项。 我觉得我应该为自己的压力得到更多的回报。 有什么我应该监视或者我应该改变使用其他系统资源?

用于高页面视图的Apacheconfiguration,长会话用户 – KeepAlive和MaxRequestvariables

我目前正在运行一个networking应用程序,可以看到几个(〜15)用户每天login一次,然后让Web应用程序打开,每5分钟自动刷新一次新内容。 每个用户往往会打开约15-18个小时。 然而,在临界质量(〜30-40)的用户,一切都开始大幅放缓,HTTPD进程开始膨胀在内存使用。 我已经添加了一个cron作业,每小时重新启动apache一次,但这只会有所帮助。 所有的内容都是dynamic生成的,新的时间,所以caching页面不是一个选项。 我已经开始使用Timeout,MaxRequest和KeepAlive选项,但任何指导都将不胜感激,因为过去我一直将这些选项留在默认值上。 这是我的。 任何Apache天才有如何优化这个configuration上述情况的想法? 我认为很长的超时是很好的,因为加载时间有时会变得非常高。 # Timeout: The number of seconds before receives and sends time out. Timeout 200 # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. KeepAlive On # MaxKeepAliveRequests: The maximum number of requests to allow […]

如何查看tcp发送和接收缓冲区的实际大小?

我们正在使用debian系统,并试图根据我们的需要调整tcp / ip堆栈。 我们都知道你可以用一些内核参数来设置最大的tcp缓冲区大小: net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.udp_wmem_min = 4096 net.core.wmem_max = 261071 为了计算你需要的最大缓冲区大小,你只需要计算它。 (见http://fasterdata.es.net/TCP-tuning/ ) 但是因为我们不知道用户的往返时间,所以相当困难。 假设20到60毫秒之间可能是可以的。 但是对于一个移动networking来说,就像100-300毫秒(用我的手机testing)。 所以很难知道有多less数据可能是“上线”的。 我们希望看到实际的缓冲区大小和利用率。 有谁知道如何进入实际的TCP写入和接收缓冲区?

Windows Server 2008文件服务器性能调整

我在我们的networking上运行Microsoft Windows Server 2008 R2文件服务器。 似乎有很多次从服务器访问数据是真的很慢,缓慢或无响应。 更糟糕的是,当我尝试从networking共享中运行或执行可执行程序或文件时,我已经开始注意到这些问题,并且在客户端打开几分钟之前,这些问题就会消失。 我很害怕如果我们想从这个文件服务器中推出软件安装将会发生什么。 我们现在和我们的客户在一些Windows XP(即将消失),Windows 7,Windows Server 2003,Windows Server 2008,Windows Server 2008 R2,Linux服务器(CentOS和Ubuntu)以及一些Macintosh OS 10.6.8和10.7个客户。 该服务器是VMWare 4.x环境中的虚拟服务器,机器上的磁盘驱动器将iSCSI目标映射回SAN。 在Unix / Linux机器上,NFS服务器不在这台服务器上。 我正在寻找想法,build议,设置,文档,魔术,任何有助于提高此服务器对所服务文件的性能以及从networking共享运行可执行文件的能力。 我已经做了一些调整每个MS文件 ,但它似乎没有帮助尽可能多,因为我认为它会。 最后, 这里提到的项目似乎不适用于这种情况。

如何更改Windows Server 2008 R2上的最大IO请求大小

据我了解,Windows Server 2008 R2能够将IO请求发送到最大1MB大小的存储子系统。 早在Server 2003时代(以前),它曾经被限制为64KB。 我似乎记得读到可以操纵最大IO请求的大小远离默认值。 我认为HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager下的registry项是必需的,但Google今天没有find任何答案。 我想要改变IO请求的大小,以便在虚拟磁盘托pipe一个专门的video录制应用程序时,对VMWare FT虚拟机的影响进行评估。 当遇到混合的大量读写请求时,我们试图解决的根本问题是VMWare FT主/次复制融合。 希望通过改变IO请求的大小,我们可以提高这个效率。

解决可怜的磁盘IO性能

请注意,虽然这个问题有点Redis的具体问题,但主要问题是通用的: 一个进程需要这么多的硬盘IO写带宽,其他进程不能写任何东西 。 我们在基于Ubuntu的Xen XCP主机中安装了一个Ubuntu VM(安装在两个硬盘上的软件RAID1中)。 该虚拟机在大约2K命令/秒的负载下运行Redis服务器。 问题:当所述Redis服务器执行BGREWRITEAOF ,它将阻塞其客户端大约10秒钟。 细节: 只有AOF持久性被使用,没有RDB。 Redis被configuration为每秒一次fsync AOF文件。 在BGREWRITEAOF Redis分支上执行subprocess中的所有磁盘密集型工作。 同时,主进程不断追加数据到它的AOF文件。 BGREWRITEAOF大约需要10秒钟(1.5GB的数据,150MB / s的磁盘写入速度)。 进行重写的subprocess消耗所有HDD IO写入吞吐量。 父进程尝试fsync ,需要超过两秒的时间,数据保护启动,并阻止write被调用,阻塞父进程,直到BGREWRITEAOF完成磁盘。 这是一个详细的信息和讨论 ,导致我上面的事件解释。 问题:对我来说,一个进程被允许占用太多磁盘IO以至于其他所有内容都被阻塞。 有什么我可以在系统级别上解决这个问题吗? 如果BGREWRITEAOF需要多一点时间,只要允许父进程在重写处于活动状态时保存其数据,那么我就行了。 请注意,我知道解决方法,如移动AOF持久性到奴隶,使用no-appendfsync-on-rewrite Redisconfiguration选项等; 这个问题是专门解决问题,而不是解决问题。

为什么GlusterFS在这里很慢?

我们build立了一对镜像对GlusterFS服务器。 GlusterFS-3.5.1在官方的RHEL6 RPM中没有任何特别的调整,这些都是“开箱即用”,这就是我们所拥有的。 集群有效,但性能非常糟糕。 例如,通过本地主机上的GlusterFS提取一个大的压缩包( firefox-31.0.source.tar.bz2 )需要大概44分钟。 直接提取同一个文件 – 在同一个磁盘上 – less于2个。在删除创build的树(通过gluster需要10分钟)时有类似的不一致… 当然,这是可以预料的,镜像需要发生,etcaetera,一个使用networking的文件系统会慢一些,但速度要慢30倍 ? 简单地复制大文件是很快的 – 所以它不是我们缺乏的带宽。 在开始运行的同时,我发现glusterfs (客户端)和glusterfsd (服务器)进程消耗了大量的CPU(每个都占用大约10%),但是系统仍然保持约70%的空闲状态 – 这两个gluster进程都是比提取bzip2和焦油更繁忙…他们在做什么? 我可以做一些调整来显着提高性能吗? 或者我应该尝试ceph (或gfarm ?)而不是gluster? 还是他们都有大量的小文件可怕? 谢谢!

关于innodb_buffer_pool_instances的Mysql innodb_buffer_pool_size

我运行一个虚拟服务器上有一个Owncloud安装。 现在Owncloud的问题就是它现在开发的方式,每次file upload都会导致一点MySql开销。 因此,尽可能地优化MySql数据库非常重要。 有很多人在网上推荐一个非常大的innodb_buffer_pool_size达到4,5或更多的GByte,有人甚至说到70到80%的总ram,嗯? 好吧,但是很less有人介意叫做innodb_buffer_pool_instances的第二个参数 所以让我们看看我的情况。 我的虚拟机资源有限。 这意味着6400 GByte总RAM,并在正常模式下约3000(由libvirt处理)。 因此,如果我设置innodb_buffer_pool_instances超过1,或者让它在新的MySql服务器的默认configuration(8或者什么)意味着(只要我明白了这一点)在最坏的情况下,例如innodb_buffer_pool_instances = 4和innodb_buffer_pool_size = 4 =>在最大情况下,4 * 4 = 16 GB RAM。 什么会导致交换磁盘的不良使用,以及MySql innodb缓冲区的每个交换使用对于任何性能都是一种矫枉过正。 结论很容易。 可用的缓冲区大小必须小于至less70%的可用ram,其余可能需要php,apache和系统本身。 那么更好的决策是什么? 只有一个可能的innodb_buffer_pool_instances但是一个非常大的innodb_buffer_pool_size或更好的一个更小的innodb_buffer_pool_size ,因此如果需要,同时更多的innodb_buffer_pool_instances 。 我的服务器最多使用10到30人左右。

两个完全不同的系统性能差异很大

我有两个同时购买相同硬件configuration的Dell R730系统。 两者都运行RHEL6.9,其中从相同的图像成像。 这是在一月份的形象。 我每月更新一次仓库中的软件包,因此一般来说系统上的所有内容都应该“几乎”相同。 (即我在一个系统上改变的任何软件或设置在另一个系统上被改变,但是由于这是一个手动过程,可能会有一些错过) 我注意到一个系统的性能比另一个慢了2.5倍。 我正在testing的工作是单线程CPU密集型。 根据iostat读取一些数据文件,但非常低的磁盘io利用率。 上图显示该进程始终与100%挂钩,但系统有88个线程,平均负载仅为大约1.很less的内存使用率。 没有networking利用率。 (它使用的所有文件都是本地的)一个是复杂的python脚本,另一个是专有的软件程序,两者在一个系统上的运行速度都比较慢。 / proc / cpuinfo是相同的。 BIOS设置是相同的。 系统上只有一个用户。 较快的系统连接到互联网,较慢的系统连接到独立networking。 在我的调查中,我只发现了两个不同之处。 1.较快的系统运行BIOS版本2.25较慢的系统运行BIOS版本2.43 2.较慢的系统已经审计运行。 但是在这个过程中审计日志中没有活动。 我意识到这很难debugging,但我正在寻找什么想法。 是否有一些内置的软件工具可以用来更深入地了解可能发生的事情?