ďťż
 
identyfikacja wątku ďťż
 
identyfikacja wątku
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

identyfikacja wątku



Leonard Milcin Jr. - 20-11-2006 00:02
identyfikacja wątku
 
Mam sobie aplikację, która generuje mnóstwo wątków różnego rodzaju.
Niektóre są napisane przeze mnie (np. wątki odpalane przy starcie
aplikacji), niektóre są związane z jedną z wielu używanych przeze mnie
bibliotek (np. com.sun.net.httpserver czy org.apache.commons.httpclient).

Mój problem polega na tym, że w jakiś sposób aplikacja ,,łapie''
utylizację. Podejrzewam, że któryś wątek się gdzieś zapętla. Problem w
tym, że aplikacja działa jak najbardziej prawidłowo (no... poza 100%
utylizacji procesora). To znaczy, że żaden z wątków które ja osobiście
odpaliłem nie jest bezpośrednio uwikłany w taką pętlę bo inaczej
straciłbym kontakt z którymś podsystemem aplikacji.

Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
jest odpowiedzialna za utylizację?

Pozdrawiam,
Leonard





Jarek Kucypera - 20-11-2006 00:02

  Leonard Milcin Jr. wrote:

> Mój problem polega na tym, że w jakiś sposób aplikacja ,,łapie''
> utylizację.

> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
> jest odpowiedzialna za utylizację?

Dżizas, gdybym był złośliwy, odpisałbym, że utylizacją zajmuje się
odśmiecacz.

--
J.K.




Leonard Milcin Jr. - 20-11-2006 00:02

  Jarek Kucypera wrote:
> Leonard Milcin Jr. wrote:
>
>> Mój problem polega na tym, że w jakiś sposób aplikacja ,,łapie''
>> utylizację.
>
>> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
>> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
>> jest odpowiedzialna za utylizację?
>
> Dżizas, gdybym był złośliwy, odpisałbym, że utylizacją zajmuje się
> odśmiecacz.
>

Zapewne tak. Zwłaszcza, że utylizacja procesora wzrasta nagle do 100% i
pozostaje tak już na stałe choć aplikacja nic nie powinna robić.

Leonard




Mikołaj Rydzewski - 20-11-2006 00:02

  Leonard Milcin Jr. wrote:

> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
> jest odpowiedzialna za utylizację?

Jesli to Java 5 to poczytaj sobie o JMX i jconsole. Wszystko ladnie
bedzie widac.

--
Mikolaj Rydzewski <miki@ceti.pl> http://ceti.pl/~miki/
PGP KeyID: 8b12ab02
There are three kinds of people: men, women and unix.





Twelve Hungry Mammoths - 20-11-2006 00:02

  On Tue, 22 Aug 2006 18:46:15 +0200, Leonard Milcin Jr.
<leonard.milcin@post.wytnij.pl> wrote:
>
> Mój problem polega na tym, że w jakiś sposób aplikacja ,,łapie''
> utylizację. Podejrzewam, że któryś wątek się gdzieś zapętla. Problem w
> tym, że aplikacja działa jak najbardziej prawidłowo (no... poza 100%
> utylizacji procesora). To znaczy, że żaden z wątków które ja osobiście
> odpaliłem nie jest bezpośrednio uwikłany w taką pętlę bo inaczej
> straciłbym kontakt z którymś podsystemem aplikacji.

jezeli aplikacja napisana jest modulowo, to sprobuj powylaczac wszystkie
mozliwe moduly. moze w ten sposob zidentyfikujesz winnego.

pzdr
szeryf




mgl - 20-11-2006 00:03

  Leonard Milcin Jr. wrote:
> Zapewne tak. Zwłaszcza, że utylizacja procesora wzrasta nagle do 100% i
> pozostaje tak już na stałe choć aplikacja nic nie powinna robić.

Kwestia formalna - nie używajmy słów, których nie znamy, bo śmiesznie
wychodzi:
http://sjp.pwn.pl/haslo.php?id=64887

I tak, Leonardzie, utylizacją procesorów można zajmować się co najwyżej
w porozumieniu z miejskimi przedsiębiorstwami oczyszania.

Odnośnie śledzenia wątków - zapoznaj się z możliwościami JConsole:
http://java.sun.com/developer/techni.../jconsole.html

Nie korzystałem z tego, ale może Tobie się przyda. Jeśli nie to warto
się rozejrzeć za innymi narzędziami do monitorowania.

--
pozdrawiam,
Michał




Leonard Milcin Jr. - 20-11-2006 00:03

  Mikołaj Rydzewski wrote:
> Leonard Milcin Jr. wrote:
>
>> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
>> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
>> jest odpowiedzialna za utylizację?
>
> Jesli to Java 5 to poczytaj sobie o JMX i jconsole. Wszystko ladnie
> bedzie widac.
>

Na śmierć zapomniałem!

Vielen herzlichen Dank!

Leonard




lucassus - 20-11-2006 00:03

  Leonard Milcin Jr. napisał(a):
> Mam sobie aplikację, która generuje mnóstwo wątków różnego rodzaju.
>

polecam:
http://jdn.pl/search/node/Debugger+Twoim+przyjacielem
szczegolnie:
http://jdn.pl/node/464




Leonard Milcin Jr. - 20-11-2006 00:03

  lucassus wrote:
> Leonard Milcin Jr. napisał(a):
>> Mam sobie aplikację, która generuje mnóstwo wątków różnego rodzaju.
>>
>
> polecam:
> http://jdn.pl/search/node/Debugger+Twoim+przyjacielem
> szczegolnie:
> http://jdn.pl/node/464

A ja proponowałbym zastanowić się nad tym co piszesz. Napisałem, że
włożenie całego skomplikowanego systemu w debugger nie wchodzi w
rachubę. Ponadto, żeby w debuggerze coś złapać to trzeba mieć choćby
blade pojęcie o tym, gdzie (np. gdzie patrzeć albo gdzie postawić
breakpoint). Mi narazie chodzi o ustalenie tego, gdzie patrzeć. I
prawdopodobnie nie chodzi nawet o mój kod tylko kod którejś z użytych
bibliotek (może źle używam?)

Zresztą znalazłem drogę i obserwuję sobie aplikację przez jconsole.

Leonard




Pawel Stawicki - 20-11-2006 00:03

  Leonard Milcin Jr. wrote:
> lucassus wrote:
>> Leonard Milcin Jr. napisał(a):
>>> Mam sobie aplikację, która generuje mnóstwo wątków różnego rodzaju.
>>>
>> polecam:
>> http://jdn.pl/search/node/Debugger+Twoim+przyjacielem
>> szczegolnie:
>> http://jdn.pl/node/464
>
> Napisałem, że
> włożenie całego skomplikowanego systemu w debugger nie wchodzi w
> rachubę. Ponadto, żeby w debuggerze coś złapać to trzeba mieć choćby
> blade pojęcie o tym, gdzie (np. gdzie patrzeć albo gdzie postawić
> breakpoint).

Nie wiem czego używasz, ale ja eclipse'a, i mam w nim system
wykorzystujący ok. 40 zewnętrznych bibliotek, podłączonych do niego jest
jeszcze 12 modułów napisanych przez nas (które też mają swoje
biblioteki), i "włożenie" tego wszystkiego w debugger to nie jest żaden
problem. Jeśli wątki zachowują się podejrzanie (też ich jest
kilkadziesiąt) to "pauzuję" cały system (takim przyciskiem w eclipsie co
wygląda jak pauza na magnetofonie) i mogę zobaczyć na jakiej metodzie
który wątek się zatrzymał. Zawsze większość wątków stoi na metodzie
wait() lub connect() lub readSocket() lub czymś takim, co z natury
"wisi" i nie zajmuje procesora. Jeśli procesor jest w 100%
"zutylizowany" to zapewne któryś wątek robi coś innego, i w ten sposób
łatwo jest go znaleźć. Nie trzeba nigdzie wstawiać żadnych breakpointów.

Oczywiście zrobisz jak będziesz chciał, odniosłem tylko wrażenie że nie
zdajesz sobie sprawy jakie masz możliwości - o ile oczywiście używasz
eclipsa. Mam nadzieję że nie będziesz mi miał tego za złe.

Pozdrawiam
Paweł Stawicki




Leonard Milcin Jr. - 20-11-2006 00:03

  Pawel Stawicki wrote:
> Leonard Milcin Jr. wrote:
>> lucassus wrote:
>>> Leonard Milcin Jr. napisał(a):
>>>> Mam sobie aplikację, która generuje mnóstwo wątków różnego rodzaju.
>>>>
>>> polecam:
>>> http://jdn.pl/search/node/Debugger+Twoim+przyjacielem
>>> szczegolnie:
>>> http://jdn.pl/node/464
>>
>> Napisałem, że
>> włożenie całego skomplikowanego systemu w debugger nie wchodzi w
>> rachubę. Ponadto, żeby w debuggerze coś złapać to trzeba mieć choćby
>> blade pojęcie o tym, gdzie (np. gdzie patrzeć albo gdzie postawić
>> breakpoint).
>
> Nie wiem czego używasz, ale ja eclipse'a, i mam w nim system
> wykorzystujący ok. 40 zewnętrznych bibliotek, podłączonych do niego jest
> jeszcze 12 modułów napisanych przez nas (które też mają swoje
> biblioteki), i "włożenie" tego wszystkiego w debugger to nie jest żaden
> problem. Jeśli wątki zachowują się podejrzanie (też ich jest
> kilkadziesiąt) to "pauzuję" cały system (takim przyciskiem w eclipsie co
> wygląda jak pauza na magnetofonie) i mogę zobaczyć na jakiej metodzie
> który wątek się zatrzymał. Zawsze większość wątków stoi na metodzie
> wait() lub connect() lub readSocket() lub czymś takim, co z natury
> "wisi" i nie zajmuje procesora. Jeśli procesor jest w 100%
> "zutylizowany" to zapewne któryś wątek robi coś innego, i w ten sposób
> łatwo jest go znaleźć. Nie trzeba nigdzie wstawiać żadnych breakpointów.

O tym nie pomyślałem. Bo breakpointy i zaglądanie do zmiennych są dla
mnie w tym przypadku bezużyteczne. Jedyny problem polega na tym, że będę
musiał mieć przez długi czas aplikację uruchomioną w debuggerze
eclipsowym, bo problem zdarza się stosunkowo rzadko (dwa razy na dzień
pracy).

> Oczywiście zrobisz jak będziesz chciał, odniosłem tylko wrażenie że nie
> zdajesz sobie sprawy jakie masz możliwości - o ile oczywiście używasz
> eclipsa. Mam nadzieję że nie będziesz mi miał tego za złe.

Bare bra! Vielen herzlichen Dank! Thank you very much!

Leonard




lucassus - 20-11-2006 00:03

  Leonard Milcin Jr. napisał(a):

>
> O tym nie pomyślałem. Bo breakpointy i zaglądanie do zmiennych są dla
> mnie w tym przypadku bezużyteczne. Jedyny problem polega na tym, że będę
> musiał mieć przez długi czas aplikację uruchomioną w debuggerze
> eclipsowym, bo problem zdarza się stosunkowo rzadko (dwa razy na dzień
> pracy).
>

1. Nie musisz ustawiać breakpointów by obserwować uruchomione wątki (tak
mi się przynajmniej wydaje).
2. Spróbuj użyć Netbeans profilera. Odpalasz aplikacje na pół dnia i w
raporcie sprawdzasz który wątek zawisł. Polecam zapoznanie się z
tutorialami do tego narzędzia: http://profiler.netbeans.org/
3. Nie ma aplikacji, której na dałoby się odpalić w debuggerze :D

pozdrawiam




lucassus - 20-11-2006 00:03

  Leonard Milcin Jr. napisał(a):
>
> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
> jest odpowiedzialna za utylizację?
>

Możesz spróbować użyć "java console" -
http://java.sun.com/j2se/1.4.2/docs/...e/console.html




Damian - 20-11-2006 00:03

  "Leonard Milcin Jr." <leonard.milcin@post.wytnij.pl> wrote in
news:44eb34d6$1@news.home.net.pl:

> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
> jest odpowiedzialna za utylizację?
>
>
> Pozdrawiam,
> Leonard

Pod windows: naciśnij kilka razy w odstępach kilku sekundowych Ctrl+Break
Pod Unix: wyślij do procesu javy sygnał Quit (kill z odpowiednim
parametrem), także kilka razy.

Po czymś takim java powinna wypisać na stdout zrzut stanu wszystkich
wątków.
Porównaj kilka takich zrzutów szukając wątków które ciągle są running
(state:R) i będziesz wiedział który to wątek i co takiego robi.

Opisana metoda działa w większości wypadków. Nie wymaga debuggera, nie
wymaga javy 5. Może być używana w środowisku produkcyjnym.

Pod niektórymi unixami trzeba odpalać killa z tej samej konsoli z której
była odpalona java.

Więcej w google, np:
http://java.sun.com/developer/techni...ng/Stacktrace/

For busy programs: The best course of action you can take for busy programs
is to generate frequent stack traces. This will narrow down the code path
that is causing the errors, and you can then start your investigation from
there.

--
Damian




Leonard Milcin Jr. - 20-11-2006 00:03

  Damian wrote:
> "Leonard Milcin Jr." <leonard.milcin@post.wytnij.pl> wrote in
> news:44eb34d6$1@news.home.net.pl:
>
>> Czy istnieje jakiś sposób (poza wpakowaniem wszystkiego do debuggera)
>> który mógłby mi pomóc zidentyfikować klasę implementującą wątek która
>> jest odpowiedzialna za utylizację?
>>
>>
>> Pozdrawiam,
>> Leonard
>
> Pod windows: naciśnij kilka razy w odstępach kilku sekundowych Ctrl+Break
> Pod Unix: wyślij do procesu javy sygnał Quit (kill z odpowiednim
> parametrem), także kilka razy.
>
> Po czymś takim java powinna wypisać na stdout zrzut stanu wszystkich
> wątków.
> Porównaj kilka takich zrzutów szukając wątków które ciągle są running
> (state:R) i będziesz wiedział który to wątek i co takiego robi.
>
> Opisana metoda działa w większości wypadków. Nie wymaga debuggera, nie
> wymaga javy 5. Może być używana w środowisku produkcyjnym.
>
> Pod niektórymi unixami trzeba odpalać killa z tej samej konsoli z której
> była odpalona java.
>
> Więcej w google, np:
> http://java.sun.com/developer/techni...ng/Stacktrace/
>
> For busy programs: The best course of action you can take for busy programs
> is to generate frequent stack traces. This will narrow down the code path
> that is causing the errors, and you can then start your investigation from
> there.
>
>

Dokładnie tego potrzebowałem. Dzięki za odpowiedzi. Mam teraz baterię
testów które sobie wykonam gdy tylko problem da o sobie znać ponownie.

Pozdrawiam,
Leonard
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    ORA-12154: TNS: nie udalo sie rozstrzygnac podanego identyfikatora polaczenia Unikalny identyfikator komputera - co byście polecali z poziomu javy ? r????nica zawartosci dwoch tabel o identycznych strukturach Dwie identyczne bazy, rozne wyniki selecta [Oracle] czy można zwiększyć długość nazwy identyfikatora [MySQL]czy mozna identyfikowac tabele? [font] bardzo prosze o identyfikacje Prośba o identyfikację fonta co to za fon t- prośba o identyfikacj identyfikacja wizualna
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • dirtyboys.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com