我通过谷歌计算引擎托pipe一个服务器用于各种目的,最着名的是一个Minecraft服务器,它收到大量的stream量和使用量。 我们所说的CPU使用率相当于150%,每秒读写50次,磁盘每秒钟读取10次,networking数据包每秒钟减less600次,因此使用率相当高。
我遇到的问题是,尽pipe服务器完全能够处理这么多的使用,但是延迟和/或处理仍然存在问题。 有很多地方出于蓝色,一个只需要十分之一秒执行的过程需要40秒甚至更长的时间。
以下是我们已经考虑的可能的问题以及我们已经实施的解决scheme:
java version "1.7.0_111" OpenJDK Runtime Environment (IcedTea 2.6.7) (7u111-2.6.7-1~deb8u1) OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)
-server -Xmx5G -Xms5G -Xmn2500M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=4 -XX:+AggressiveOpts
正如您所看到的,我们采取了各种措施来减less延迟和stream程限制,但是我们只是没有想法。 还有其他的方式,我们错过了我们的stream程,或者这是我们托pipe的软件固有的问题?
有几件事情要考虑:
a)GCE虚拟机具有networking出口吞吐量,如下所述。 PD写入I / O和networkingstream量对这个上限计数。 对于拥有4个内核的虚拟机,上限为8 Gbps。
b) 本文中logging了GCE磁盘的最大持续IOPS。 使用本地SSD可能会提高您的性能,但这些磁盘上的信息并不耐用。 换句话说,只有当您停止或删除VM时, 本地SSD中的数据才会持续存在 。
c) Stackdriver可以帮助您监视项目中的资源并减less瓶颈。