|
|
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
товарищи:)), помогите разобраться: есть одно консольное приложение написанное на java. которое подключается к определенному серверу (адрес сервера задается в конфигурационном файле) и слушает его. Всего 5 серверов которые нужно прослушивать. Java приложению через командную строку передается конфигурационный файлик. Когда я запускаю 4 приложения, все работает как по маслу. При запуске 5-го приложения минут через 5-10 пятое приложение начинает загружать процессор до 90-100%, в то время как другие 4 работают отлично, загрузка процессора 1-10%, прекрасно обрабатывают запросы от сервера. (от первых 4-х серверов идут 5-10 запросов в минуту, от пятого сервера запросы вообще не идут (так и долно быть), приложение просто должно слушать пятый сервер). Вообще ничего не могу понять, первые четыре подключения к серверам работают стабильно, а подключение к 5-му грузит процессор. Даже если я запущу подключение к 5-му серверу первым, а потом остальные подключения, то всеравно подключение к 5-му серверу грузит проц.:(( и еще в логах переодически запысывается (IOException) java.net.SocketException: Software caused connection abort: socket write error ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 15:18:20 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
Ну значит проблема именно в этом пятом сервере - он кривой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 15:29:08 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
5-ый сервер не кривой, это смс цент у оператора, он просто не может быть кривой, эт. проверенно, а у меня вылетает переодически ошибка java.net.SocketException: Software caused connection abort: socket write error, (т.е. ошибка на моей стороне) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 15:36:28 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
denisshа у меня вылетает переодически ошибка java.net.SocketException: Software caused connection abort: socket write error, (т.е. ошибка на моей стороне) Это вы с чего вдруг взяли - что раз socket write error, то ошибка на вашей стороне? Не пойму логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 15:51:38 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
denisshДаже если я запущу подключение к 5-му серверу первым, а потом остальные подключения, то всеравно подключение к 5-му серверу грузит проц.:(( и еще в логах переодически запысывается (IOException) java.net.SocketException: Software caused connection abort: socket write error Потрассируйте ваше консольное приложение. Возможно, его вешает один единственный вызов метода (возм. платформы), что и порождает 100% перегруз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 16:03:42 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
mayton denisshДаже если я запущу подключение к 5-му серверу первым, а потом остальные подключения, то всеравно подключение к 5-му серверу грузит проц.:(( и еще в логах переодически запысывается (IOException) java.net.SocketException: Software caused connection abort: socket write error Потрассируйте ваше консольное приложение. Возможно, его вешает один единственный вызов метода (возм. платформы), что и порождает 100% перегруз. mayton, приложение большое, другие 4 конекта работают на 5+, а при конекте к 5-му серверу 100% загрузка может быть и через час, а может и через 5 минут....(если бы вы сказали как трасировать в jbuilder'е, в основном все ошибки были очевидны, и глубоко копать не приходилось, я особо не смыслю в трассировке) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 16:24:28 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
ррмяф denisshа у меня вылетает переодически ошибка java.net.SocketException: Software caused connection abort: socket write error, (т.е. ошибка на моей стороне) Это вы с чего вдруг взяли - что раз socket write error, то ошибка на вашей стороне? Не пойму логики. ррмяф, насколько я знаю Software caused connection abort - это программа порождает обрыв связи (вполне возможно я и не прав). Мое приложение каждые 30 секунд проверяет коннект, отправляет определенный пакет серверу и сервер отвечает мне этот же пакет + добавляет пару байтов, и в какойто момент приложение не может отправить пакет и пораждается исключение это, но сразу за ошибкой приложение востанавливает конект и продолжает обмениваться пакетами.... ррмяф, ты мог бы поподробнее ообъяснить в чем я не прав, что бы я мог привести эти аргументы людям, кот. сидят за 5 сервером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 16:31:03 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
denissh ррмяф, ты мог бы поподробнее ообъяснить в чем я не прав, что бы я мог привести эти аргументы людям, кот. сидят за 5 сервером? Ну почему бы вам не воспользоваться гуглом? тынц Например, http://forum.java.sun.com/thread.jspa?threadID=582968 Guys, I had faced a similar problem. Actually this happens when the server closes the socket connection while u writing to it, or in general using the socket. I could solve this by increasing the timeout period or in fact not giving any timeout at all. Hope this helps ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 16:49:25 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
А вообще причин может быть много. По хорошему, нужно запускать профайлер и смотреть. Либо устанавливать свои счётчики на методы и замерять, какой из них стал выполняться очень долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 17:19:00 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
denisshmayton, приложение большое, другие 4 конекта работают на 5+, а при конекте к 5-му серверу 100% загрузка может быть и через час, а может и через 5 минут....(если бы вы сказали как трасировать в jbuilder'е, в основном все ошибки были очевидны, и глубоко копать не приходилось, я особо не смыслю в трассировке) Ну.. если вы работаете в IDE, у вас должен быть режим профилирования. Поищите его где-то в меню Run (к сожалению я не знаком с JBuilder и могу ошибатся). Профиль позволит увидеть причину тормозов. И еще. Хотелось бы взглянуть на фрагмент кода, который приводит к возникновению IOException. (Желательно не 2-3 строки а хотя-бы один файл-класс). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 17:26:37 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
mayton denisshmayton, приложение большое, другие 4 конекта работают на 5+, а при конекте к 5-му серверу 100% загрузка может быть и через час, а может и через 5 минут....(если бы вы сказали как трасировать в jbuilder'е, в основном все ошибки были очевидны, и глубоко копать не приходилось, я особо не смыслю в трассировке) Ну.. если вы работаете в IDE, у вас должен быть режим профилирования. Поищите его где-то в меню Run (к сожалению я не знаком с JBuilder и могу ошибатся). Профиль позволит увидеть причину тормозов. И еще. Хотелось бы взглянуть на фрагмент кода, который приводит к возникновению IOException. (Желательно не 2-3 строки а хотя-бы один файл-класс). Вот функция проверки конекта: public int enquireLink() { int link = 1; EnquireLink request = new EnquireLink(); try { session.enquireLink(request); <------(собственно здесь возникает ошибка иногда) session.getEvent().write("Client: (47), request for Enquire Link " + request.debugString()); } catch (IOException ex) { link = -1; session.getEvent().write("Client: (61), "+(new Date(System.currentTimeMillis())).toString() + " request for Enquire Link failed. (IOException) "+ex); } return link; } вот здесь она вызывается раз в 30 сек. int i = client.enquireLink(); if(i == -1) { client = new Client(SmppPropert); if(client.linkstate == 1) linkcheck = System.currentTimeMillis(); } else { linkcheck = System.currentTimeMillis(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 17:57:18 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
вот mayton, выше вроде все учавствующие в этом классы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 18:00:53 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
нафига ты запускаешь 5 инстансов (SMPP?)клиента, вместо того чтобы сделать его многопоточным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 19:36:59 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
5 экземпляров для того чтобы если один вылетит, все остальные продолжали работать..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 03:26:15 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
to mayton: есть какие нибудь предложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 06:58:47 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
denisshto mayton: есть какие нибудь предложения? Пока не знаю, denissh. Думаю, что чтения исходников здесь недостаточно. Чтобы смоделировать твою ситуацию, я должен обладать твоей операционной системой и твоей версией Java-машины и иметь доступ к серверам сообщений. Понятное дело, что таких условий у меня нет и вряд-ли они появятся. Поэтому единственный нормальный и разумный выход, который я вижу - это изменять условия запуска, логировать значимые события, трассировать время выполнения критичных участков кода и.т.п. И всё это придется делать на твоей машине. Тебя устраивает такой вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 12:09:23 |
|
||
|
java грузит процессор на 100%
|
|||
|---|---|---|---|
|
#18+
Ну может и не в тему но проц легко может грузить постоянно выполняющийся поток если ему не делать sleep. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 15:45:35 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34173011&tid=2147309]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 432ms |

| 0 / 0 |
