|
|
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
Вопрос следующий. На сервере под Linux Mandrake нужно запустить 2 томката. Проблема в следующем: запускаем каждый через jsvc и наблюдаем след-ю картину: top: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24788 tomcat 16 0 357m 63m 15m S 0.0 6.3 0:09.22 jsvc 23765 tomcat 16 0 347m 51m 15m S 0.0 5.1 0:05.34 jsvc не устраивают показатели занимаемой памяти. Какие будут предложения по уменьшению занимаемой памяти ? Оптимизация приложения - само собой, производиться постоянно. Все дело в том, что один из этих процессов - по сути пустое приложение ? Я так полагаю, основную часть памяти занимает виртуальная машина ? Или я ошибаюсь ? Кто как решает эту проблему ? Ссылки на полезную информацию, которые могут помочь решить проблему привествуются. Заранее благодарен все ответившим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 07:17 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
При запуске томката (см. catalina.sh) указывается, сколько памяти ему можно кушать. Ищите или добавляйте ключик типа -Xmx512M. Если он не указан, то используется значение по умолчанию (оно отличается для разных версий). Для пустого приложения поставьте, например, -Xmx64M. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 09:28 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
об этом я знаю.... Все-таки еще раз задам вопрос, который интересует меня больше всего: столбик VIRT - 357 метров. Это все-таки память, которую забирает на себя jvm ? Если да - то след вопрос: я запускаю два томката (через jsvc, хотя особой роли это не играет). Возможно ли следующее: виртуальная машина забрала себе теже 300m один раз, а затем все томкаты, которые запускаются в дальнейшем - запускаются под той же jvm (т.е. память повторно не выделяется), а выделяется память только под нужды самого приложения (теже 50m). Выглядить это будет примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 11:49 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
нельзя так. одно приложение Java, одна JVM. 2-а приожения Java, 2-е JVM и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 12:06 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
>одно приложение Java, одна JVM. 2-а приожения Java, 2-е JVM и т.д. Все именно так.Однако общее использование памяти потенциально возможно. Значение VIRT в топе показывает общий обем виртуальной памяти, занимаемой процессом. Значение SHR показывает объем потенциально шарящейся памяти. Для всех 2 десятков работающих у меня инстансов java значение VIRT ~100Mb и значение SHR 37Mb. При этом общий обем памяти 1Gb + 1Gb swap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 16:31 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
А что показывает RES ? И как удалось настолько сократить объем виртуальной памяти (у меня один процесс jsvc занимает 350 mb при старте) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 19:09 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
RES: - объем физической незасвопленой памяти занимаемой процессом. Должно быть VIRT = RES + SWP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 22:31 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
По поводу занимаемой памяти - мне ничего не пришлось в данном случае делать - меня параметры устраивают и они сразу были такие(Linux 2.6, Java 1.5.0_01, Tomcat 5) Но вам дали правильный совет: поиграть с ключами виртуальной машины: -Xms<size> set initial Java heap size -Xmx<size> set maximum Java heap size Соответственно попробовать поставить например "-Xms32M -Xmx128M" в параметры JVM: CATALINA_OPTS="-Xms32M -Xmx128M" ./enterprise2/jakarta-tomcat-5.5.9/bin/startup.sh Хотя ... Только что для проверки запустил на лаптопе и огреб: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4244 wsg 21 0 409m 32m 11m S 0.0 6.5 0:04.45 java 4245 wsg 16 0 409m 32m 11m S 0.0 6.5 0:00.00 java 4246 wsg 16 0 409m 32m 11m S 0.0 6.5 0:00.30 java 4247 wsg 16 0 409m 32m 11m S 0.0 6.5 0:00.00 java 4248 wsg 15 0 409m 32m 11m S 0.0 6.5 0:00.00 java 4249 wsg 22 0 409m 32m 11m S 0.0 6.5 0:00.00 java ... etc ... А у меня всего 512M памяти - что-то здесь просто не так с подсчетом в некоторых случаях. Если узнаю - вернусь ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 22:55 |
|
||
|
Mandrake, Java, Tomcat
|
|||
|---|---|---|---|
|
#18+
Отличный ответ есть здесь: <Quote> However asking the process how much memory it has allocated will show all memory including stuff that is marked copy on write - that is, I could have 100 processes showing they each use 1.4MB of memory, because they all share the same libray, but in fact, its the same copy they are all using so I'm only using 1.4 MB instead of 140MB (+PCB et. al) </Quote> http://tree.celinuxforum.org/CelfPubWiki/RuntimeMemoryMeasurement#head-19bbfd1f007d9cb0b97b831a1cb1dc06fcd0df10 Там же ссылка на приятную тулзу для измерения памяти: http://www.schleef.org/~ds/mem_usage ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 11:44 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=737&tid=2149667]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 366ms |

| 0 / 0 |
