Lars Gehre wrote: > Thanks, I can confirm, it works now without problems.
Thanks as well! > > 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