Самое первое, что вы должны проверить, это то, что клиенты фактически используют функцию keepalive вообще.Я не уверен, что вы подразумеваете под «сервером API», но если это своего рода веб-сервис, то (IME) довольно сложно реализовать клиентов с хорошим поведением, используя keepalive (см. Директиву% k для mod_log_config).
Кроме того, нам действительно нужно знать, каковы ваши цели и ограничения?Производительность / емкость / низкая стоимость?
Работает ли это по HTTP или HTTPS - есть большая разница в задержке.
Я бы сказал, что 10-секундное время ожидания остается невероятно высоким -совсем не низкий.
Даже если у вас есть 90 клиентов с открытыми соединениями, 4Gb кажется довольно большим объемом памяти для них - я использую системы с 150-200 одновременными соединениями со сложнымиPHP-скрипты, использующие примерно 0,5 ГБ по сравнению с отдыхом.Ваши цифры 250 + 90 x 20M дают вам только размер около 2 Гб (я знаю, что это не так просто - но это не намного сложнее).
Для приведенных вами цифр я бы не ожидал никакой выгоды - но значительно большего объема памяти - используя что-то более 5 секунд для поддержки активности.Возможно, вы могли бы использовать время поддержки активности в 2 секунды без существенной потери пропускной способности, но ничто не заменит измерение эффективности различных конфигураций - и анализ данных, чтобы найти оптимальную конфигурацию.
Конечно, если вы обнаружите, что ваши клиенты могут воспользоваться преимуществами keepalive и получить ощутимую выгоду от этого, вам нужно найти наилучший способ обеспечить это.Использование многопоточного сервера может немного помочь с использованием памяти, но вы, вероятно, найдете гораздо больше преимуществ при использовании обратного прокси-сервера перед веб-сервером, особенно в том, что касается SSL.
Кроме того, вы можете получить значительные преимущества.через обычную настройку - профилирование кода, сжатие вывода и т. д.