/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Socket problem
Fra : Janosh


Dato : 16-06-04 09:22

Hej NG

Jeg har et lille problem med et c++ prgogram som er flyttet fra HP-UX
til AIX.
Programmet danne en email som sendes via en socket forbindelse til
sendmail.
Problemet er at ca. en gang om måneden fejler programmet med:

11:55:07 ** errno = 24, message = Too many open files **
11:55:07 ** Error in file email.cpp at line 60, function
eMail::Connect **

Problemet fandtes ikke da programmet kørte på HP-UX, og jeg er ret
sikker på at jeg rydder op efter mig.

Er der nogen som har en idé, evt noget opsætning af AIX eller
sendmail.

På forhånd tak.

Mvh. Janosh

 
 
Jesper Toft (17-06-2004)
Kommentar
Fra : Jesper Toft


Dato : 17-06-04 10:54

Janosh wrote:

> 11:55:07 ** errno = 24, message = Too many open files **
> 11:55:07 ** Error in file email.cpp at line 60, function
> eMail::Connect **
>
> Problemet fandtes ikke da programmet kørte på HP-UX, og jeg er ret
> sikker på at jeg rydder op efter mig.

Det kunne nu godt tyde på at du enten har for mange aktive connection på en
gang eller glemmer at lukke dem du ikke bruger mere.

Prøv at lave en "ulimit -n". Det vil fortælle dig hvor mange åbne
connections/filer dit program må have.

Dette tal svinger meget fra system til system. Fx har linux et limit på
1024, hvorimod openbsd, vidt jeg husker, har et standard bruger limit på
64.

Så problemet findes sikkert også på din HPUX, men du opdager det ikke hvis
dit limit er meget stort.

--
/Jesper


Janosh (18-06-2004)
Kommentar
Fra : Janosh


Dato : 18-06-04 14:13

Tak for hjælpen.
ulimit -n siger 4000
Jeg har sat en counter ind i mig program for at finde ud af om det er
et oprydnings problem. For at se om programmet fejler efter 4000
mails.
Når jeg ser i koden kan jeg se at jeg har erstattet en close(socket)
med shutdown(socket, 2).
Måske skal tilføje close efter shutdown?

Med venlig hilsen
Janosh

Jesper Toft (19-06-2004)
Kommentar
Fra : Jesper Toft


Dato : 19-06-04 19:59

Janosh wrote:

> Når jeg ser i koden kan jeg se at jeg har erstattet en close(socket)
> med shutdown(socket, 2).
> Måske skal tilføje close efter shutdown?

close() skulle være nok. shutdown() er blot til at lukke dele af
forbindelse, hvor close lukker det hele og frigiver fd'et.

Hvis du virkelig skal bruge shutdown() skal du også lave en close()
efterfølgende.

--
/Jesper


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408936
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste