Hi Bogdan,
The server has been running for about 18 hours without any "out of memory" messages. Usually these appeared after a few hours. I think it is fixed, but I will keep you posted if it reappears. Thanks a lot!
I guess the same fix needs to go in subst_uri() and maybe also add a check if(result->s!=0) ?
Why did this only appear on the first receiver child? I would expect that all children receive an equal amount of traffic so they should all run out of memory more or less at the same time. Except if when a message is received, Openser finds the first available child and does this by trying child 1,2,3... Is this the case?
Last (related?) question: There is a thread that the first receiver child starts, what is its purpose?
Thank you
George
-----Original Message----- From: Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro] Sent: Thursday, June 21, 2007 4:32 PM To: Papadopoulos Georgios Cc: users@openser.org Subject: Re: [Users] out of memory - please help
Hi George,
I made a fix related to subst_user() - could you apply it and give it a try?
Thanks and regards, Bogdan
Papadopoulos Georgios wrote:
Hi Bogdan,
I am using all of the functions that you mentioned. I am also using subst(). Please, let me know if you need more info.
best regards
George
-----Original Message----- From: Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro] Sent: Thursday, June 21, 2007 1:46 PM To: Papadopoulos Georgios Cc: users@openser.org Subject: Re: [Users] out of memory - please help
Hi George,
looking over the log, it might be something wrong with subst_str() function - I see a lot of memory allocated by this function (3267 mem chunks).
now, I have to trace the function using the subst_str() function :)..So, are you using from script one of the following functions: subst_uri() subst_user() avp_subst()
regards, bogdan
Papadopoulos Georgios wrote:
Hello all,
We have an ongoing issue with Openser running out of
memory after a
few hours. It is very consistent which makes me believe it
is a memory
leak. Can someone look at the log file? I have done a mem dump on process 8573 which is the one that ran out of memory. Here
is the log:
_http://www.real.gr/files/openser.20070620.log.gz_ It always happens on the first receiver child. Our current
solution is
to restart Openser every few hours. I would like to solve
this at its
root, so please let me know if you need more info. My Openser is 1.2.x from svn, revision 2333.
thank you for any help
George
Disclaimer
The information in this e-mail and any attachments is
confidential. It
is intended solely for the attention and use of the named addressee(s). If you are not the intended recipient, or person responsible for delivering this information to the intended
recipient,
please notify the sender immediately. Unless you are the intended recipient or his/her representative you are not
authorized to, and
must not, read, copy, distribute, use or retain this
message or any
part of it. E-mail transmission cannot be guaranteed to be
secure or
error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses.
--
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Hi George,
Papadopoulos Georgios wrote:
Hi Bogdan,
The server has been running for about 18 hours without any "out of memory" messages. Usually these appeared after a few hours. I think it is fixed, but I will keep you posted if it reappears. Thanks a lot!
That is super! I will commit the patch on SVN.
I guess the same fix needs to go in subst_uri() and maybe also add a check if(result->s!=0) ?
well, in subst_uri() there is no need because the result->s chunk is transferred to msg->new_uri (and freed later from there); in subst_user(), the result->s chunk was copied by the SET_USER_T action, so we need to free it also.
Why did this only appear on the first receiver child? I would expect that all children receive an equal amount of traffic so they should all run out of memory more or less at the same time. Except if when a message is received, Openser finds the first available child and does this by trying child 1,2,3... Is this the case?
this scheduling is done by kernel and there is no guarantee of a uniform distribution in case of low traffic.
Last (related?) question: There is a thread that the first receiver child starts, what is its purpose?
you mean a process (there are no threads in openser). it might be a listener of mi_fifo.
Regards, Bogdan
Thank you
George
-----Original Message----- From: Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro] Sent: Thursday, June 21, 2007 4:32 PM To: Papadopoulos Georgios Cc: users@openser.org Subject: Re: [Users] out of memory - please help
Hi George,
I made a fix related to subst_user() - could you apply it and give it a try?
Thanks and regards, Bogdan
Papadopoulos Georgios wrote:
Hi Bogdan,
I am using all of the functions that you mentioned. I am also using subst(). Please, let me know if you need more info.
best regards
George
-----Original Message----- From: Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro] Sent: Thursday, June 21, 2007 1:46 PM To: Papadopoulos Georgios Cc: users@openser.org Subject: Re: [Users] out of memory - please help
Hi George,
looking over the log, it might be something wrong with subst_str() function - I see a lot of memory allocated by this function (3267 mem chunks).
now, I have to trace the function using the subst_str() function :)..So, are you using from script one of the following functions: subst_uri() subst_user() avp_subst()
regards, bogdan
Papadopoulos Georgios wrote:
Hello all,
We have an ongoing issue with Openser running out of
memory after a
few hours. It is very consistent which makes me believe it
is a memory
leak. Can someone look at the log file? I have done a mem dump on process 8573 which is the one that ran out of memory. Here
is the log:
_http://www.real.gr/files/openser.20070620.log.gz_ It always happens on the first receiver child. Our current
solution is
to restart Openser every few hours. I would like to solve
this at its
root, so please let me know if you need more info. My Openser is 1.2.x from svn, revision 2333.
thank you for any help
George
Disclaimer
The information in this e-mail and any attachments is
confidential. It
is intended solely for the attention and use of the named addressee(s). If you are not the intended recipient, or person responsible for delivering this information to the intended
recipient,
please notify the sender immediately. Unless you are the intended recipient or his/her representative you are not
authorized to, and
must not, read, copy, distribute, use or retain this
message or any
part of it. E-mail transmission cannot be guaranteed to be
secure or
error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses.
--
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Papadopoulos Georgios wrote:
Why did this only appear on the first receiver child? I would expect that all children receive an equal amount of traffic so they should all run out of memory more or less at the same time. Except if when a message is received, Openser finds the first available child and does this by trying child 1,2,3... Is this the case?
The distribution between the UDP listener threads is not done by openser but by the OS. openser will open port 5060 and then fork the process "children=..." times. Then, all processes will read from the same port.
Last (related?) question: There is a thread that the first receiver child starts, what is its purpose?
Maybe "openserctl ps" can give you more insight.
regards kalus