Я размещаю сервер через Google Compute Engine для различных целей, в первую очередь сервер Minecraft, и он получает много трафика и использования. Мы говорим о довольно постоянной загрузке ЦП на уровне 150%, 50 операций чтения / 10 операций записи на диск в секунду, и 600 вниз / 1700 сетевых пакетов в секунду, так что довольно мало использования.
Проблема, с которой я столкнулся, заключается в том, что, несмотря на то, что сервер полностью способен справиться с таким большим использованием, все еще есть проблемы с задержкой и / или обработка. Есть много моментов, когда совершенно неожиданно один процесс, который должен выполняться всего за одну десятую секунды, занимает 40 секунд или даже больше.
Вот возможные проблемы, которые мы уже рассмотрели, и решения, которые у нас есть уже введено:
версия java "1.7.0_111"
Среда выполнения OpenJDK (IcedTea 2.6.7) (7u111-2.6.7-1 ~ deb8u1)
64-разрядная серверная виртуальная машина OpenJDK (сборка 24.111-b01, смешанный режим)
-server -Xmx5G -Xms5G -Xmn2500M -XX: + UseConcMarkSweepGC -XX: + UseParNewGC - XX: + CMSIncrementalPacing -XX: ParallelGCThreads = 4 -XX: + AggressiveOpts
Как видите, мы приняли различные меры для уменьшения задержки и ограничения процессов, но у нас просто закончились идеи. Есть ли другой способ ограничения нашего процесса, который мы упустили? или эта проблема связана с программным обеспечением, которое мы размещаем?
Следует учитывать несколько моментов:
a) Виртуальные машины GCE имеют ограничения выходной пропускной способности сети, как описано здесь . В соответствии с этим ограничением учитываются операции ввода-вывода PD и сетевой трафик. Для ВМ с 4 ядрами ограничение составляет 8 Гбит / с.
б) Максимальные устойчивые IOPS дисков GCE задокументированы в этой статье . Использование локального SSD может повысить вашу производительность, но информация на этих дисках недолговечна. Другими словами, данные в Local SSD сохраняются только до тех пор, пока вы не остановите или не удалите виртуальную машину.
c) Stackdriver может помочь вам контролировать ресурсы в вашем проекте и выявить узкие места.