Использование ЦП сервера Java в 100% после двух дней непрерывное выполнение приблизительно с 110 пользователями

После многих дней поиска в Интернете я не смог найти ни полной документации, ни двоичного примера протокола файла.

Самый информативный ресурс, который я нашел до сих пор, см. В http://www.digitalpreservation.gov/formats/fdd/fdd000127.shtml (Формат файла Motion JPEG 2000 - имеет много «Полезное ссылки на URL-адреса "в конце, включая" ​​Обзор Motion JPEG2000 ", которые, по крайней мере, способствуют ответу на вопрос).

Вы найдете множество PDF Apple MOV, которое, очевидно, включает в себя Motion JPEG, но расшифровка займет недели. Я могу только предложить другим, что приведенный выше URL является хорошей отправной точкой для дальнейших исследований.

6
задан sam 9 October 2009 в 11:55
поделиться

4 ответа

Во-первых, вы должны убедиться, какой процесс потребляет весь процессор. Неужели это Java-программа? Попробуйте top (1) выяснить это, если вы еще этого не сделали.

Если у вас есть и вы уверены, что это программа Java, включите удаленную отладку . Когда ЦП в следующий раз закипит, подключитесь и убедитесь, что ни один поток не входит в бесконечный цикл.

Если это ' Это не тот случай, вам не хватает памяти (что бы ни говорил менеджер Tomcat). Запустите консоль JMX и проверьте различные области памяти. Я предполагаю, что permgen довольно заполнен (много ли больших JAR на вашем пути к классам? Или вы где-то используете cglib?) Когда это произойдет (и поскольку у вас включен perm gen GC), виртуальная машина Java попытается освободить память в пространство perm gen все время.

Если вы не используете что-то, что создает файлы классов во время выполнения (например, язык сценариев, такой как Groovy), это не будет работать: в обычных программах Java классы никогда не могут быть GC'd . Если вы все же это сделаете, ГХ будет работать и работать и ничего не добьется, кроме как сжечь всю мощность процессора.

Я предполагаю, что permgen довольно заполнен (много ли больших JAR на вашем пути к классам? Или вы где-то используете cglib?) Когда это произойдет (и поскольку у вас включен perm gen GC), виртуальная машина Java попытается освободить память в пространство perm gen все время.

Если вы не используете что-то, что создает файлы классов во время выполнения (например, язык сценариев, такой как Groovy), это не будет работать: в обычных программах Java классы никогда не могут быть GC'd . Если вы все же сделаете это, GC будет работать и работать, и ничего не достигнет, кроме как сжечь всю мощность процессора.

Я предполагаю, что permgen довольно заполнен (много ли больших JAR на вашем пути к классам? Или вы где-то используете cglib?) Когда это произойдет (и поскольку у вас включен perm gen GC), виртуальная машина Java попытается освободить память в пространство perm gen все время.

Если вы не используете что-то, что создает файлы классов во время выполнения (например, язык сценариев, такой как Groovy), это не будет работать: в обычных программах Java классы никогда не могут быть GC'd . Если вы все же сделаете это, GC будет работать и работать, и ничего не достигнет, кроме как сжечь всю мощность процессора.

Если вы не используете что-то, что создает файлы классов во время выполнения (например, язык сценариев, такой как Groovy), это не будет работать: в обычных программах Java классы никогда не могут быть GC. Если вы все же сделаете это, GC будет работать и работать, и ничего не достигнет, кроме как сжечь всю мощность процессора.

Если вы не используете что-то, что создает файлы классов во время выполнения (например, язык сценариев, такой как Groovy), это не будет работать: в обычных программах Java классы никогда не могут быть GC. Если вы все же это сделаете, ГХ будет работать и работать и ничего не добьется, кроме как сжечь всю мощность процессора.

5
ответ дан 17 December 2019 в 02:30
поделиться

I'd recommend using jstat to monitor tomcat's memory and garbage collection patterns.

You say you're facing perm gen errors, but haven't increased the amount of perm gen. Reloading tomcat apps can cause perm gen leakage, but you're probably observing your usage before you open all your pages, resulting in loading more classes into perm gen.

0
ответ дан 17 December 2019 в 02:30
поделиться

your problem is that you are having in code something like this:

       new Thread(){
          public void run(){
             //something
          }
       }.start();

which in turn creates each time new class definition file in Tomcat's cache - and that eats space, so you have PermGenSpace exception...

rewrite some of your critical classes not to create custom classes 'on the fly', make separate inner classes and things will change...

      class MyJobDoer extends Thread{
          public void run(){
             //something
          }
       }

      MyJobDoer mjd=new MyJobDoer();
      mjd.start();
0
ответ дан 17 December 2019 в 02:30
поделиться

Возможно, это та же проблема, которую решают 1 и 2 . Старайтесь создавать только небольшие транзакции.

1
ответ дан 17 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: