Newsgroup: it.comp.java
Titolo: too many open files

salve,
lavoro con 2 macchine HP-UX in cluster e il mio applicativo è stato
sviluppato con WebSphere 512.
da 2 mesi a questa parte succede che su entrambe le macchine si
presenta il messaggio di errore "too many open files".
non riusciamo ad attribuire l'evento a nessuna causa in particolare:
succede quando meno ce lo aspettiamo e non riusciamo a controllarlo in
nessun modo. l'unico modo per recuperare la funzionalità delle
macchine è un kill del processo java.
monitorando a posteriori l'andamento dei file aperti sulla macchina con
il comando lsof, abbiamo visto che nei momenti critici i file di tipo
REGULAR associati al processo java aumentano notevolmente senza mai
accennare a diminuire, fino a superare i limiti massimi previsti.
volevo sapere se qualcuno sa darmi un suggerimento su quale potrebbe
essere la causa scatenante di questo comportamento anomalo. grazie

 writes:
t> da 2 mesi a questa parte succede che su entrambe le macchine si
t> presenta il messaggio di errore "too many open files".
Sembra un errore del sistema operativo... lsof se c'è che dice ?
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

Gian Uberto Lauri ha scritto:

ciao!
il comando lsof mostra che nei momenti critici aumentano a dismisura i
file di tipo REGULAR e quelli di tipo STSO legati al processo
principale di java.
controllando i limiti con il comando ulimit -a sulle due macchine ho i
seguenti valori:
open files                    (-n) 2048
open files                    (-n) 1024
valori che vengono superati dai file associati al processo java nei
momenti del disastro.
ma da come questo numero aumenta esponenzialmente la soluzione non è
certo aumentare quei limiti, perchè pare evidente che ci a qualunque
nuovo limite si arriverebbe lo stesso.
grazie dell'interessamento.

 ha scritto nel messaggio 
news:1150288181.6...@y43g2000cwc.googlegroups.com...


quindi in ogni caso per te la soluzione consiste nell'aumento di quel
parametro?
la mia paura è che a un certo punto i file aumentino senza piu'
diminuire....
c'è un modo per capire dal comando lsof quali sono i file aperti
elencati?
a disposizione c'è il numero di NODE: è lo stesso che riesco a
visualizzare con il comando ls -i ??
grazie mille!

toomany ha scritto:

Posso farti una domanda?
Tu lavori su cluster (cosa che ti invidio) con sistemi operativi rudi
(cosa che ti invidio) e riesci a porre domande del tipo quali dei file
aperti sono i file aperti?
A parte questo ti pongo le classiche domande (che immagino ti sarai
già fatte): è stato modificato il codice prima (ma anche tanto) che
si verificasse il problema?
Ne sei sicuro?
Hai un backup del codice per fare dei confronti? (se non hai il backup
dimettiti, fallo per il bene della ditta)
A volte piccoli 'miglioramenti' possono innescare reazioni impreviste.
Da quanto tempo gira su quelle macchine?
Puoi ripristinare una vecchia copia del programma?
Se conosci il programma cerca di pensare se può andare in loop a causa
di un file danneggato, a volte basta un carattere di spurio.
Se puoi modificare il sorgente introduci delle linee (facilmente
eliminabili) che vadano a crearti un log (ti suggerisco di creare una
classe apposta).
Oltre a questo io non ti so suggerire altro e a meno che non sia un
problema di configurazione del sistema operativo, andare ad individuare
il problema non sarà semplice.
Ciao & Auguri

 ha scritto nel messaggio 
news:1150300683.5...@i40g2000cwc.googlegroups.com...


ciao,
le fix dell' HP-UX ci sono tutte, purtroppo mi viene da dire!
forse allora sarà il caso di controllare le patches di websphere.
comunque un controllino con l'HPJconfig magari proviamo a darlo, solo
che sarà difficile farlo in tempi brevi.
grazie a tutti e se trovate un esperto websphere, fatemelo sapere!

 writes:
t> quindi in ogni caso per te la soluzione consiste nell'aumento di
t> quel parametro?  la mia paura è che a un certo punto i file
t> aumentino senza piu' diminuire....
Io farei dare una occhiata  al codice... Se aprono dei file temporanei
sul file system e e poi si  dimenticano di fare le close, e magari gli
oggetti rimangono non trattabili da garbage collector....
t> c'è un modo per capire dal comando lsof quali sono i file aperti
t> elencati?  a disposizione c'è il numero di NODE: è lo stesso che
t> riesco a visualizzare con il comando ls -i ??
Non hai solo gli inode, hai  anche il major e minor number del device,
il nome device su cui sono e  perfino il processo che li ha aperti (ho
tolto un po' di blank per rimanere il più possibile nei margini):
COMMAND  PID USER FD  TYPE DEVICE    SIZE   NODE NAME
syslogd 3904 root  1w  REG    3,6 3283196 359755 /var/log/auth.log
syslogd 3904 root  2w  REG    3,6 6337741 359831 /var/log/syslog
syslogd 3904 root  3w  REG    3,6  290550 359763 /var/log/daemon.log
syslogd 3904 root  4w  REG    3,6 2684187 359775 /var/log/kern.log
syslogd 3904 root  5w  REG    3,6       0 359778 /var/log/lpr.log
syslogd 3904 root  6w  REG    3,6       0 359783 /var/log/mail.log
syslogd 3904 root  7w  REG    3,6  480101 359834 /var/log/user.log
syslogd 3904 root  8w  REG    3,6       0 359835 /var/log/uucp.log
syslogd 3904 root  9w  REG    3,6       0 359782 /var/log/
mail.info
syslogd 3904 root 10w  REG    3,6       0 359784 /var/log/mail.warn
syslogd 3904 root 11w  REG    3,6       0 359781 /var/log/mail.err
Questi sono  i file aperti da  syslog sul mio  portatile (sviluppo con
GNU/Linux), come vedi dice chiaramente  che il colpevole è il processo
3904 syslogd che gira con l'id di root, hanno i descrittori da 1 a 11,
sono REGular files, sono sul  device Major 3 (per GNU/Linux canale ide
1, primario, aka  hda), Minor 6, (partizione 6, quindi  hda6) ne da la
dimensione, l'inode ed il nome.
lsof ha opzioni per selezionare il processo, il tipo, il descrittore e
quant'altro, o al limite mandi tutto in pipe a grep...
A leggere questo output ho or ora(*) imparato leggendomi man lsof (che
tra  l'altro  è  lo  stesso   sia  sotto  GNU/Linux  che  sotto  *BSD,
S(l)o(w)laris,  HP/(s)UX,   AI(d)X,  ovviamente  per   ognuno  vengono
raccontate le cose specifiche.
(*) Sono quasi 10 anni che non mi occupo più di attività sistemistiche.
Capisco che ci sono sistemisti  (---) che non installano i manuali per
risparmiare spazio disco, se fosse il tuo caso e man lsof non ci fosse
fammi un fischio a saint [chiocciola] efffe esse effe e [punto] o erre
gi (scusa se  lo ho scritto in questo modo,  fan**lo agli harvester) e
te lo mando volentieri.
