Nano Hash - криптовалюты, майнинг, программирование

Apache Tomcat JVM Heapsize на Redhat 5 64 бит 32 RAM 2 четырехъядерный процессор Xeon Проблемы с производительностью

пожалуйста, помогите мне настроить мои серверы, когда количество подключений за один раз превышает 500, мой httpd просто зависает и перестает отвечать.

У меня такая же конфигурация с 2008 года, и теперь я добавил немного оперативной памяти, теперь у меня 32 ГБ на каждом из двух серверов.

Первый установил RHEL 5 64 bit 2.6.18-53.1.4.el5xen, он доставляет jnlp клиентам, которые после подключения ко второму серверу

Apache 2.2.3 httpd.conf

<IfModule prefork.c>
StartServers       8
MinSpareServers   10
MaxSpareServers   75
ServerLimit      1100
MaxClients       1100
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

java 1.6.0_27 со следующими параметрами

java -server -Xmx1280M -XX:MaxPermSize=256M -Djava.awt.headless=true ...

tomcat server.xml со следующими параметрами

 ...   connectionTimeout="12000" maxSpareThreads="250" protocol="AJP/1.3" 
 maxHttpHeaderSize="8192" disableUploadTimeout="true" minSpareThreads="25" 
 useBodyEncodingForURI="true" maxThreads="500" acceptCount="100" 
 enableLookups="false" ...

Второй сервер имеет только JVM java-процесс HW, такой же, как указано выше, зависает, когда количество подключенных пользователей превышает 600. Вчера я изменил Xmx с 4000 м до 26 г в надежде, что это позволит использовать больше ОЗУ для этого процесса. но не вижу, что он использует больше 4g в верхней части.

java -server -Xmx26g -Djava.awt.headless=true -Dfile.encoding=UTF-8 -jar

top - 01:34:10 up 252 days,  8:02,  1 user,  load average: 0.00, 0.02, 0.00
Tasks: 127 total,   1 running, 126 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.8%us,  0.2%sy,  0.0%ni, 97.7%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  37049860k total,  3225916k used, 33823944k free,   331836k buffers
Swap: 10223608k total,        0k used, 10223608k free,  2409808k cached

top - 03:57:04 up 252 days,  8:02,  1 user,  load average: 0.01, 0.02, 0.00
Tasks: 145 total,   1 running, 144 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.8%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  37108368k total, 36117600k used,   990768k free,   218364k buffers
Swap:  2031608k total,      120k used,  2031488k free, 33518948k cached

пожалуйста, помогите мне решить эту проблему. Я планирую обновить все это, но не уверен, будет ли моя java-программа работать с новыми версиями rhel apache tomcat и jvm.


  • Что делает JVM, когда система перестает отвечать на запросы? Что делает базовая операционная система? 11.08.2016
  • Является ли JVM 64-битной? Кроме того, 1.6 немного староват, я бы немного беспокоился о проблемах с безопасностью ... 11.08.2016
  • JVM работает, операционная система очень медленная, второй сервер работает как веб-конференция. Bouth-серверы работают с системами в порядке. 11.08.2016
  • my httpd just freezes and stop responding. Хорошо, я запутался ... Tomcat или Apache перед ним вызывают проблемы? 11.08.2016
  • да, все 64 бита, я знаю, что он старый и панорамируется для обновления в ближайшем будущем, но нужно настроить размеры apache и кучи, чтобы соответствовать новому барабану и дать им некоторый толчок производительности 11.08.2016
  • да проблемы с tomcat и apache при одновременном подключении более 500 11.08.2016

Ответы:


1

Скорее всего, это ваша проблема на стороне Tomcat

maxThreads="500"

в server.xml ... Поднимите его, чтобы разрешить больше одновременных подключений.

maxThreads

Максимальное количество потоков обработки запросов, создаваемых этим коннектором, поэтому определяет максимальное количество одновременных запросов, которые могут быть обработаны. Если не указан, этому атрибуту присваивается значение 200. Если с этим соединителем связан исполнитель, этот атрибут игнорируется, поскольку соединитель будет выполнять задачи, используя исполнителя, а не внутренний пул потоков.

Из документации Apache Tomcat

Кроме того, в этой части объясняется, почему могут подключаться 600 клиентов:

acceptCount="100"

Это позволяет еще 100 клиентам ждать в очереди до обслуживания.

acceptCount

Максимальная длина очереди для входящих запросов на соединение, когда используются все возможные потоки обработки запросов. Любые запросы, полученные при заполнении очереди, будут отклонены. Значение по умолчанию - 100.

Примечание. Чтобы иметь возможность проверить ситуацию с памятью, вы можете подключиться к Tomcat с помощью JMX (jconsole, jvisualvm и т. д.), а также вы можете проверить множество фактических настроек. , как описано в FAQ по мониторингу Tomcat.

11.08.2016
  • как насчет других параметров xmx и параметров httpd.conf? 11.08.2016
  • @Olzh: у вас есть доказательства, что куча заполнена? Что в этом отношении показывает подключение через JMX? Если у вас включено ведение журнала GC, что он показывает? 11.08.2016
  • я увеличил до 1500, завтра будет большой сеанс, как проверить, использует ли кот этот параметр или нет 11.08.2016
  • @Olzh просто подключитесь через JMX - вы увидите, что происходит. 11.08.2016
  • нет, это просто мои мысли, несколько месяцев назад у меня были логи с просьбой увеличить размер кучи. подскажите где проверить, спасибо что помогли @ppeterka 11.08.2016
  • @Olzh проверьте этот вопрос: Подключение удаленного экземпляра Tomcat JMX с помощью jConsole Это содержит некоторые сведения о том, как запустить Tomcat, чтобы иметь возможность подключаться с помощью jconsole. Это показывает все необходимые данные. 11.08.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..