Я прикрепил два профилировщика Google Stackdriver для нашего внутреннего сервера. Бэкэнд API просто пытается сначала прочитать из Memcache, если он не существует или имеет ошибку тайм-аута, а затем извлечь данные из большой таблицы.
Основываясь на профилях времени стены и времени процессора, я бы хотел знать
- Почему процесс libjvm_so потребляет столько (45,8%) процессорного времени, потому что сервер выделяет много памяти, что вызывает сборку мусора с использованием большого количества процессоров?
- Временной профиль показывает, что 97% времени потока ожидает ресурс, я полагаю, что он ожидает, когда Memcache / сервер больших таблиц вернет данные, это правда? Значит ли это, что серверу не нужно так много процессора? (в настоящее время 16 процессоров со средней загрузкой 35%)
- Есть еще какие-нибудь идеи? Где можно улучшить et c?