idHTTP i wiszące połączenia
Programowanie – epizod z idHTTP.
Wiem, wiem, to już prawie było… ;)
Swoją drogą – mięczak, potrzebował wody… ;)
Kod w Delphi, do zapytań HTTP używam idHTTP z pakietu Indy. Każde zapytanie ma nagłówek
Connection: Close
– zarówno po stronie klienta jak i odsyłane przez serwer. Mimo to netstat
po obu stronach (klienta i serwera) pokazuje, że połączenia HTTP wiszą sobie jeszcze spory kawałek czasu po zakończeniu zapytania. Czemu?Zasadniczy problem polega na tym, że wiszą dłużej niż trzeba czekać na nawiązanie kolejnego, zatem ich liczba rośnie. Jest to niebezpieczne nie tylko dla jakiejś tam stabilności któregokolwiek systemu (;P), ale i dla użytkownika, który znów może nagle dostać komunikat „BANG! Maksymalna ilość połączeń z tego IP przekroczona” na nie wiadomo jak długo. 10 sekund między kolejnymi odświeżeniami czata to za długo dla użytkownika, a za krótko, by liczba połączeń nie rosła. Prace nad HTTP po raz kolejny zostają zawieszone.
Help needed.
Masz czasem takie uczucie, że każdy Twój kod (czy cokolwiek tam sobie tworzysz ;)) zawsze musi mieć kilka naprawdę poważnych błędów różnego rodzaju? (tu wstaw sobie dowolną analogię do swojej twórczości) Też czujesz się czasem jak gówno a nie [tu wstaw określenie człowieka, który tworzy to, co Tobie znowu nie wyszło ;P]. Wybacz Panie, jestem tylko nędznym robakiem.
PS. Jakby co to poprawiłem co się dało w księdze gości i komentach – w tym nawet odpowiedziałem na 1 komentarz, który nigdy nie został wysłany ;) Gdyby coś nie działało, don’t hesitate to contact me (via gg/jabber/tlen – tylko nie zaczynajcie od pytania, czy jestem ;))