Thanks, I can confirm, it works now without problems. Lars
> -----Original Message----- > From: twsocket-boun...@elists.org > [mailto:twsocket-boun...@elists.org] On Behalf Of Arno Garrels > Sent: Friday, July 01, 2011 8:35 AM > To: ICS support mailing > Subject: Re: [twsocket] HTTP Server creates extremly high CPU load > > Lars Gehre wrote: > > I think, I found something. > > Thanks for reporting, I just checked in a fix. > Available via SVN now or included in next daily snapshot > here: http://wiki.overbyte.be/wiki/index.php/ICS_Download > > -- > Arno Garrels > > > > The problem seems to be the head request. Normaly you do a HEAD and > > close the connection, but in my case it stays open and the > http server > > gets stuck in an endless loop. > > > > The culprits are: > > > > procedure THttpConnection.SendDocument(SendType : > THttpSendType;const > > CustomHeaders : String); and procedure > > THttpConnection.ConnectionDataSent(Sender : TObject; Error : > > WORD); > > > > In SendDocument the fdocsize gets set to the size of the > stream and a > > > > if SendType = httpSendHead then > > FDocStream.Seek(0, soFromEnd) > > > > And > > if SendType = httpSendDoc then > > SendStream > > else > > Send(nil, 0); { Added 15/04/02 } // this one > triggers the > > ConnectionDataSent. > > > > > > In ConnectionDataSent FDataSent >= FDocSize is the end trigger but > > > > ToSend := FDocSize - FDataSent; //fdatasent = 0 > > if ToSend > FSndBlkSize then > > ToSend := FSndBlkSize; > > Count := FDocStream.Read(FDocBuf^, ToSend); // =0 because of > > FDocStream.Seek(0, soFromEnd) in SendDocument > > FDataSent := FDataSent + Count; { Count data which is sent > > } // 0 + 0 = 0 > > if State = wsConnected then { Be sure to be still > > connected... } > > Send(FDocBuf, Count); { before actually send any > > data. } // starts it all over again... > > > > Maybe a > > if (FDataSent >= FDocSize) or > > (FDocStream.Position=FDocStream.Size) then begin > > > > might be a solution, but I don't know enough of the inner > workings of > > the http component to foresee possible side effects... > > > > Lars > > > > > > > >> -----Original Message----- > >> From: twsocket-boun...@elists.org > >> [mailto:twsocket-boun...@elists.org] On Behalf Of Lars Gehre > >> Sent: Thursday, June 30, 2011 9:49 PM > >> To: 'ICS support mailing' > >> Subject: Re: [twsocket] HTTP Server creates extremly high CPU load > >> > >> Well I was a little to fast with my conclusion. It only happens to > >> files in the demo because they have a proper header, the virtual > >> documents only give a 404 for a HEAD request. > >> > >> The download is not of matter, the demo files are 500 bytes or so. > >> And the server load stays as long as the client is connected. > >> > >> As I said, I was able to replicate this on two different > machines and > >> it is not limited to local access. cross tests between the > machines > >> also show this behaviour. > >> > >> Lars > >> > >> > >>> -----Original Message----- > >>> From: twsocket-boun...@elists.org > >>> [mailto:twsocket-boun...@elists.org] On Behalf Of Arno Garrels > >>> Sent: Thursday, June 30, 2011 3:49 PM > >>> To: ICS support mailing > >>> Subject: Re: [twsocket] HTTP Server creates extremly high CPU load > >>> > >>> Lars Gehre wrote: > >>>> I noticed one thing: This only happens if files are > involved, for > >>>> virtual documents it does not happen. > >>> > >>> I cannot reproduce it, 0.0% CPU here. > >>> I used the OverbyteIcsWebServ demo running on a Win7 quadcore. > >>> However if I download a file with Firefox (100 Mbit/s LAN) > >> at around 6 > >>> MB/s CPU 0 uses ~25-30% and CPU 2 8-15%, overall usage of > >> the server > >>> process ~8-10% reported by Process Explorer. > >>> > >>> -- > >>> Arno Garrels > >>> > >>> > >>> > >>>> > >>>> For the http server demo it means you need to open Index.html or > >>>> Form.html. > >>>> > >>>> Lars > >>>> > >>>>> -----Original Message----- > >>>>> From: twsocket-boun...@elists.org > >>>>> [mailto:twsocket-boun...@elists.org] On Behalf Of Lars Gehre > >>>>> Sent: Thursday, June 30, 2011 11:21 AM > >>>>> To: 'ICS support mailing' > >>>>> Subject: [twsocket] HTTP Server creates extremly high CPU load > >>>>> > >>>>> Hello all, > >>>>> > >>>>> I have a serious problem with the http server component from > >>>>> ICS7 (downloaded from the repository last week). > >>>>> > >>>>> I'm using the wininet api on the client side to open a (GET) > >>>>> connection to a ICS http Server. > >>>>> For certain reasons I need to query the HEAD in > intervals (while > >>>>> the other get is still in progress). > >>>>> As soon as I send the second request the CPU load of the http > >>>>> server maxes out one CPU core. > >>>>> > >>>>> Steps to reproduce: > >>>>> > >>>>> - Run the http server demo from ics. > >>>>> > >>>>> - Download the demo > >>>>> www.dvbviewer.tv/icsproblem/icsproblem.zip source (delphi 7) > >>>>> > >>>>> - Run the demo, enter the url of the demo server and press the > >>>>> button. > >>>>> > >>>>> - As soon as the call to GetFileSize is finished you > see the CPU > >>>>> load of the webserver going up. > >>>>> > >>>>> > >>>>> I checked it on two windows 7 (multicore) machines with > the same > >>>>> result. > >>>>> > >>>>> I also checked it against several other http servers > and none of > >>>>> them had a problem with this kind of usage. > >>>>> > >>>>> > >>>>> Thanks > >>>>> Lars > >>>>> > >>>>> -- > >>>>> To unsubscribe or change your settings for TWSocket > mailing list > >>>>> please goto > >>>>> http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket > >>>>> Visit our website at http://www.overbyte.be > >>> -- > >>> To unsubscribe or change your settings for TWSocket mailing list > >>> please goto > >> http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket > >>> Visit our website at http://www.overbyte.be > >>> > >> > >> -- > >> To unsubscribe or change your settings for TWSocket mailing list > >> please goto > http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket > >> Visit our website at http://www.overbyte.be > -- > To unsubscribe or change your settings for TWSocket mailing > list please goto > http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket > Visit our website at http://www.overbyte.be > -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be