[编辑]这个问题是不同于主持人提出的,我试图找出什么可能导致API由于几行代码变得缓慢。 我不是按照主持人的build议去做容量计划。 我已经inheritance了一些性能问题的服务器。 它运行节点js,nginx,基本MEAN栈。 (DB在另一台服务器上) 每当我复制一个文件(大小约为150MB的日志文件)或vim文件的大小,“iostat -x 1”的输出将如下 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda 0.00 8137.62 0.00 49.50 0.00 29924.75 604.48 17.32 123.54 16.50 81.68 avg-cpu: %user %nice %system %iowait %steal %idle 1.59 0.00 24.34 0.00 0.00 74.07 […]
我的网站今天似乎有超过一百万的访问量,通常大约是两万个,对我来说,似乎几乎没有反应。 我已经做了一些调查并优化了Apache,修正了PHP会话的一个错误,但现在我遇到的问题是MySQL通常使用100%+ CPU。 服务器是32GB的RAM,约50%免费,无交换,3.3Ghz CPU,4核心,4线程。 我已经在PHP中closures了持续的MySQL连接。 当我运行SHOW PROCESSES(); 最多只有8个,没有一个在拖延。 我的大部分表格都是MyISAM。 InnoDB的表没有太多用处。 my.cnf的内容: expire_logs_days = 10 max_binlog_size = 100M innodb_file_per_table innodb_flush_method=O_DIRECT innodb_log_file_size=1G innodb_buffer_pool_size=4G [mysqldump] quick quote-names max_allowed_packet = 16M [isamchk] key_buffer = 16M !includedir /etc/mysql/conf.d/ 有没有人有任何build议的命令来运行? 设置改变? 这可能有帮助。 或者,也许服务器无法处理这么多的stream量。 虽然在每天60万次访问中都很好。 UPDATE 根据这篇文章: https://o6asan.com/blog-e/2014/07/03/how-to-see-mysql-server-status-by-phpmyadmin/ 我进入了phpMyAdmin状态面板,并开始玩一些突出显示为红色的值。 这似乎有一点帮助。 然而,就我而言,我认为我没有办法做,因为服务器每秒处理大约500个查询。 所以我会考虑打开我的HTMLcaching。 使用100MBcaching启用MySQL查询caching也有很大的不同。 该网站仍然是缓慢的,但它在每个负载,有时很快,有时慢。 最终的解决scheme是caching整个网站,禁止一些需要活力的页面。
我们在包含一些ESI块的应用程序前使用Varnish(4)。 我们所看到的(如预期的那样),只要我们的后端响应初始请求,varnish就会从服务器stream式传输响应。 这个问题是子请求(ESI)在加载时有时可能会暂停(因为它们没有从caching中提供),这会导致页面上出现明显的“加载混乱”。 我们宁愿让清漆等到整个回应准备好之后再回来(我知道这会增加ttfb,但我认为对于我们的用户来说感觉到的加载速度更快)。 这是一个坏主意吗? 无论如何,通过configuration/ VCL清漆,或者我需要在我的清漆实例(双清漆!)前运行另一个清漆实例。
我们在新的FCoE环境中获得了一些有趣的performance,我希望人们可以让我知道我们看到的是预期的行为。 我们的交换环境由2台Cisco Nexus 5672交换机组成,每台交换机都挂有一台Nexus 2348 UPQ FEX。 在FEX上,我们有我们的ESX主机(Dell R630)和Emulex CNA。 我们的SAN是一个EMC VNX 5300,其中包含一个10g FCoE卡。 无论SAN连接到2348还是5672,ESX主机上的虚拟机的写入性能都保持不变。 但是,阅读性能变化很大。 当SAN连接到5672时,我们平均4k读取的响应时间大约是0.25ms。 但是,将SAN连接到2348会导致读取响应时间跳到〜2.5ms。 查看ESXTOP中的统计信息,所有额外的响应时间都来自QAVG。 我知道FEX没有本地交换,因此要求所有的数据包stream过5672交换机,但是这个额外的2ms的延迟似乎特别高(特别是考虑到我可以在<0.02ms之间的服务器之间ping)。 我见过的所有参考体系结构都将SAN / SAN交换结构直接连接到“核心”Nexus交换机,但是我没有在哪里读过任何理由。 我不反对以这种方式连接SAN,我只是想明白为什么。 长话短说:这种performance差距是否正常?
我在Ubuntu 14.04(几乎默认设置),虚拟云服务器上的Apache 2.4.7有问题。 在中等服务器负载(大约2 / 3.0 cpu使用率和可用内存吨数)build立HTTPS连接的时间长达5-15秒(有时更多)。 下面是一个curl输出的例子,看看这个时候: My-MBP:~ me$ curl –trace-time –trace-ascii – https://domain.tld/some.png 20:44:40.952209 == Info: Trying 111.111.111.111… 20:45:16.046183 == Info: Connected to domain.tld (111.111.111.111) port 443 (#0) 20:45:32.371816 == Info: TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 20:45:32.371919 == Info: Server certificate: www.domain.tld 20:45:32.371946 == Info: Server certificate: GlobalSign Extended Validation CA – SHA256 […]
当我需要事先与sync执行echo 3 > /proc/sys/vm/drop_caches时,是否更好使用 sync && echo 3 > /proc/sys/vm/drop_caches或 sync ; echo 3 > /proc/sys/vm/drop_caches sync ; echo 3 > /proc/sys/vm/drop_caches 。 这是否甚至重要,因为这两个命令对文件系统数据是安全的? 或者第二个版本可能会丢失数据?
我们正在调查我们的虚拟机中的I / O负载以及对其进行优化的可能性,并且显示大部分负载是由PostgreSQL的统计收集器生成的。 它跳跃3,5和6,5 MB /秒。 我已经在这个主题上find了一些有趣的资源 ,他们build议使用tmpfs把大部分统计数据保存在内存中,这对我来说是有意义的,具体的虚拟机有足够的RAM来支持这种情况。 来源1说以下内容: 重新启动后,PostgreSQL将把这些文件复制到新的位置(当它停止时返回)。 这与stats_temp_directory的configuration名称中的temp结合听起来就像数据在其他地方持久化一样。 那么在Postgres进程不干净的情况下,临时数据会发生什么? 如果这个过程在最后一周没有任何问题,它会完全丢失吗? 或者,Postgres在运行时是否定期保存临时目录之外的数据? 可能在不干净的关机后简单地使用可用的临时数据? 我在问,因为目前一旦写入的数据被保存在本地文件系统中,并且用于写入数据的操作似乎是primefaces性的,但是如果我们切换到使用tmpfs,那么如果整个服务器出现故障,那么数周的统计数据可能会丢失一些原因。 有没有办法让Postgres定期在tmpfs之外保存数据,就像每隔一小时左右一次? 或者,我需要使用一些覆盖/堆叠/任何文件系统,将持久的一个更低,tmpfs更高,并find一些手动同步手动一次? 谢谢!
在2015年12月,亚马逊推出了他们的VPC NAT网关服务 ,这个服务基本上是创build自己的托pipe替代scheme(与NAT实例相比 , 它看起来非常好 )。 我正要部署自己的NAT实例,并决定使用NAT网关来替我省下configuration和维护自己的NAT服务的麻烦。 该服务的工作原理如同广告一样,直到我注意到一个奇怪的行为,我一直是一个愉快的chappy。 我使用NAT网关后面的EC2实例来testing一堆网站,每个EC2实例运行最多4个并行的Firefox +seleniumtesting。 我注意到以前在其他地方运行良好的testing在这个环境下一直没有成功。 因此,我创build了两个t2.large实例,一个具有公共弹性IP并直接访问Internet; 另一个带有私有IP,位于NAT网关后面。 以下是针对某些网站运行apache基准testing的结果: EIP ab -kn 1000 -c 20 https://www.pinterest.com/ (…) Time taken for tests: 17.331 seconds ab -kn 1000 -c 20 http://speedtest.ftp.otenet.gr/files/test100k.db (…) Time taken for tests: 9.610 seconds ab -kn 1000 -c 20 http://www.bbc.com/ (…) Time taken for tests: 5.890 seconds NAT […]
我的第一篇文章,不幸的是由于我的专用(Linux Centos 6)服务器上运行一些个人和一个商业网站的问题。 Server version: Apache/2.4.18 (Unix) Server built: Mar 7 2016 20:22:35 Cpanel::Easy::Apache v3.32.10 rev9999 root@server213-171-196-40 [~]# free total used free shared buffers cached Mem: 16212880 15939912 272968 1939060 65928 13730952 -/+ buffers/cache: 2143032 14069848 Swap: 4194296 1477616 2716680 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND [b] 2900 nobody […]
我想知道有没有人碰到这个问题? 您可以在DigitalOcean等某些云中获得一些健壮的12核VPS实例,并在“主动 – 被动”群集configuration中为其设置数据库。 一切工作起来都很好,与专用服务器相比,你节省了大量的资金,而且还有高可用性。 如果您长时间未故障转移此群集,您的云提供商将会注意到您的备用服务器从不使用这12个CPU。 而且他们会将一堆其他VPS实例添加到主机中,以消耗所有未充分利用的容量。 然后,您的下一个故障转移会导致重大灾难,因为您的主机服务器不堪重负,您的数据库无法处理正常的负载。 你知道这个问题的任何解决方法,不花钱吗? 我正在考虑安排一些脚本来检查最近的系统负载,并创build一些人造的工作负载,以确保虚拟机pipe理程序不会低估备用服务器的资源需求。您是否有更优雅的选项?