I have been reporting the pop3 high load a long time ago (1 year),
till now we still don't have a solid solution, I will try you patch.

I am not a experienced programmer, but from what I understand, one
should use non-blocking methode with accept() and select(), but this
is more for the incoming traffic as for outgoing the programmer
should take care of the writes and buffer. I have the impression
that the writes to the buffer is quicker thant emptying the buffer
and somthing is trying to fill the buffer all the time, please
correct me if I am wrong

just my 2 cents

Ming-Wei

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] Behalf
> Of Jesse Norell
> Sent: Monday, October 06, 2003 11:18 PM
> To: dbmail@dbmail.org
> Subject: Re: [Dbmail] 100% cpu usage with dbmail-pop3d
> 
> 
> Hello,
> 
>   Please try the attached patch and see if it helps.  I think it has
> some, but maybe not as much as I thought originally.
> 
>   Anyone really familiar with network programming?  I'm wondering if
> this just needs to put in a select() loop for the writes.  Does a
> constant fwrite() loop end up blocking with high cpu usage when the
> tcp send buffer is full, vs. using a select() loop to only write when
> it wouldn't block?  I can try to test that, but it'd be nice if
> someone with experience there would share their thoughts/experience.
> 
> Thanks,
> Jesse
> 
> 
> 
> ---- Original Message ----
> From: Jesse Norell <dbmail@dbmail.org>
> To: dbmail@dbmail.org
> Subject: Re: [Dbmail] 100% cpu usage with dbmail-pop3d
> Sent: Mon,  6 Oct 2003 14:14:19 -0600 (MDT)
> 
> > 
> > Hello,
> > 
> >   In very little testing, that seems to have fixed or greatly helped
> > the problem.  I changed it to a 4096 byte buffer, flushing every
> > 2048 bytes ... I'll try to get a simple patch made that you can test
> > too.  (Will have to pull out a few of other patches first...)
> > 
> > 
> > 
> > ---- Original Message ----
> > From: Jesse Norell <dbmail@dbmail.org>
> > To: dbmail@dbmail.org
> > Subject: Re: [Dbmail] 100% cpu usage with dbmail-pop3d
> > Sent: Mon,  6 Oct 2003 12:44:48 -0600 (MDT)
> > 
> > > 
> > > Ok, taking a quick look at it again, this is what I gather:
> > > 
> > > The time is spent in db_send_message_lines when sending a 
> RETR reply
> > > from pop3.c calling:
> > > 
> > >  fprintf ((FILE *)stream,"+OK %llu octets\r\n",((struct 
> message *)tmpelement->data)->msize);
> > >  return db_send_message_lines ((void *)stream, ((struct 
> message *)tmpelement->data)->realmessageid,-2, 0);
> > > 
> > > 
> > >   Looking in dbpgsql.c, in db_send_message_lines, we allocate a
> > > 1MB buffer (ie. READ_BLOCK_SIZE from db.h * 2) and read the db
> > > return data into it one char at a time, handling \n -> \r\n
> > > conversion and escaping periods, and then flush that 
> buffer at every
> > > 3000 characters, then memset the whole 1MB buffer back to null,
> > > in this block:
> > > 
> > >              if (rowlength%3000==0)  /* purge buffer at 
> every 3000 bytes  */
> > >                 {
> > >                   /* fprintf ((FILE *)fstream,"%s",buffer); */
> > >                   /* fflush ((FILE *)fstream); */
> > > 
> > >                   fwrite (buffer, sizeof(char), 
> strlen(buffer), (FILE *)fstream);
> > > 
> > >                   /*  cleanup the buffer  */
> > >                   memset (buffer, '\0', (READ_BLOCK_SIZE*2));
> > >                 }
> > > 
> > > 
> > >   I don't know how long it takes to write to 1MB of memory, but
> > > that seems a bit inefficient.  I might see if I can use a smaller
> > > working buffer and see if that fixes it.  Any avid C coders see
> > > that as an immediate alarm condition?
> > > 
> > > jn
> > > 
> > > 
> > > ---- Original Message ----
> > > From: Jesse Norell <dbmail@dbmail.org>
> > > To: dbmail@dbmail.org
> > > Subject: Re: [Dbmail] 100% cpu usage with dbmail-pop3d
> > > Sent: Mon,  6 Oct 2003 12:11:37 -0600 (MDT)
> > > 
> > > > 
> > > > Hello,
> > > > 
> > > >   Yes, that's exactly what it acts like.  I looked over 
> the code a
> > > > bit once and nothing stood out as definitely wrong, but I really
> > > > don't do a lot of C network coding, so it could easily be.
> > > > 
> > > > 
> > > > ---- Original Message ----
> > > > From: Bret Baptist <dbmail@dbmail.org>
> > > > To: dbmail@dbmail.org
> > > > Subject: Re: [Dbmail] 100% cpu usage with dbmail-pop3d
> > > > Sent: Mon, 6 Oct 2003 12:48:16 -0500
> > > > 
> > > > > Sarge is testing.
> > > > > 
> > > > > Well I think we can rule out the postgres libs, since 
> I am running MySQL.  I 
> > > > > am thinking it must be the SQL code they are using, 
> instead of idling while 
> > > > > waiting for the client to download, it is just taking 
> all the cpu. 
> > > > > 
> > > > > Just silly.
> > > > > 
> > > > > 
> > > > > Bret.
> > > > > 
> > > > > 
> > > > > 
> > > > > On Monday 06 October 2003 12:36 pm, Jesse Norell wrote:
> > > > > > Hello,
> > > > > >
> > > > > >   Take comfort in the fact that you're not alone 
> ... but I don't
> > > > > > have a solution for you.  This is exactly what 
> we're seeing after
> > > > > > having upgraded to debian unstable (is unstable now 
> sarge?).  I
> > > > > > alluded to this briefly in a reply the other day - 
> I think the
> > > > > > problem has to either be in the linux kernel or the 
> postgres libs,
> > > > > > not dbmail itsself, but maybe would be possible to 
> work around
> > > > > > it if it could be nailed down.  We've not had much 
> time to look
> > > > > > into it, just have enough pop3 front ends that we 
> can put it off
> > > > > > for a while.  It has persisted through a few kernel 
> updates (and
> > > > > > tried smp kernel, same effects), and at least one 
> postgres lib
> > > > > > update also...
> > > > > >
> > > > > >
> > > > > >
> > > > > > ---- Original Message ----
> > > > > > From: Bret Baptist <dbmail@dbmail.org>
> > > > > > To: dbmail@dbmail.org
> > > > > > Subject: [Dbmail] 100% cpu usage with dbmail-pop3d
> > > > > > Sent: Mon, 6 Oct 2003 12:24:21 -0500
> > > > > >
> > > > > > > I recently switched over to a separate dbmail 
> front end server and
> > > > > > > database server.   When I set the new front end 
> server up I used debian
> > > > > > > sarge.  Since that time I have been having huge 
> problems with load being
> > > > > > > caused by dbmail-pop3d.  It appears to attempt to 
> use all the available
> > > > > > > cpu while transferring messages to the client.   
> I had never seen this
> > > > > > > before when running the front end and database on 
> the same server.
> > > > > > >
> > > > > > > Does anyone have any clues?  This is where the 
> logs are at when it is
> > > > > > > taking 100% cpu:
> > > > > > > Oct  6 12:02:52 destiny dbmail/pop3d[20773]: 
> pop3():RETR command,
> > > > > > > retrieving message
> > > > > > > Oct  6 12:02:52 destiny dbmail/pop3d[20773]: 
> pop3(): RETR command,
> > > > > > > selecting message
> > > > > > > Oct  6 12:02:52 destiny dbmail/pop3d[20773]: 
> db_send_message_lines():
> > > > > > > request for [-2] lines
> > > > > > > Oct  6 12:02:52 destiny dbmail/pop3d[20773]: 
> db_send_message_lines():
> > > > > > > executing query [SELECT * FROM messageblks WHERE 
> message_idnr=2458388
> > > > > > > ORDER BY messageblk_idnr ASC]
> > > > > > > Oct  6 12:02:52 destiny dbmail/pop3d[20773]: 
> db_query(): executing
> > > > > > > [SELECT * FROM messageblks WHERE 
> message_idnr=2458388 ORDER BY
> > > > > > > messageblk_idnr ASC] Oct  6 12:02:52 destiny 
> dbmail/pop3d[20773]:
> > > > > > > db_send_message_lines(): sending [-2] lines from 
> message [2458388]
> > > > > > > Oct  6 12:02:52 destiny dbmail/pop3d[20773]: 
> db_send_message_lines():
> > > > > > > getting nextblock [1]
> > > > > > >
> > > > > > > I am running the latest CVS version available, 
> and still seeing this
> > > > > > > issue.
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Bret Baptist
> > > > > > > Systems and Technical Support Specialist
> > > > > > > [EMAIL PROTECTED]
> > > > > > > Internet Exposure, Inc.
> > > > > > > http://www.iexposure.com
> > > > > > >
> > > > > > > (612)676-1946 x17
> > > > > > > Web Development-Web Marketing-ISP Services
> > > > > > > ------------------------------------------
> > > > > > >
> > > > > > >
> > > > > > > Today is the tomorrow you worried about yesterday.
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > Dbmail mailing list
> > > > > > > Dbmail@dbmail.org
> > > > > > > https://mailman.fastxs.nl/mailman/listinfo/dbmail
> > > > > >
> > > > > > -- End Original Message --
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Jesse Norell
> > > > > > jesse (at) kci.net
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > Dbmail mailing list
> > > > > > Dbmail@dbmail.org
> > > > > > https://mailman.fastxs.nl/mailman/listinfo/dbmail
> > > > > 
> > > > > -- 
> > > > > Bret Baptist
> > > > > Systems and Technical Support Specialist
> > > > > [EMAIL PROTECTED]
> > > > > Internet Exposure, Inc.
> > > > > http://www.iexposure.com
> > > > >  
> > > > > (612)676-1946 x17
> > > > > Web Development-Web Marketing-ISP Services
> > > > > ------------------------------------------
> > > > > 
> > > > > 
> > > > > Today is the tomorrow you worried about yesterday.
> > > > > 
> > > > > _______________________________________________
> > > > > Dbmail mailing list
> > > > > Dbmail@dbmail.org
> > > > > https://mailman.fastxs.nl/mailman/listinfo/dbmail
> > > > > 
> > > > -- End Original Message --
> > > > 
> > > > 
> > > > --
> > > > Jesse Norell
> > > > jesse (at) kci.net
> > > > 
> > > > 
> > > > _______________________________________________
> > > > Dbmail mailing list
> > > > Dbmail@dbmail.org
> > > > https://mailman.fastxs.nl/mailman/listinfo/dbmail
> > > > 
> > > -- End Original Message --
> > > 
> > > 
> > > --
> > > Jesse Norell
> > > jesse (at) kci.net
> > > 
> > > 
> > > _______________________________________________
> > > Dbmail mailing list
> > > Dbmail@dbmail.org
> > > https://mailman.fastxs.nl/mailman/listinfo/dbmail
> > > 
> > -- End Original Message --
> > 
> > 
> > --
> > Jesse Norell
> > jesse (at) kci.net
> > 
> > 
> > _______________________________________________
> > Dbmail mailing list
> > Dbmail@dbmail.org
> > https://mailman.fastxs.nl/mailman/listinfo/dbmail
> > 
> -- End Original Message --
> 
> 
> --
> Jesse Norell
> jesse (at) kci.net
> 
> 

Reply via email to