Почему "засыпает" задача СЕРВЕР



Posted by Evgen A. Palamarchuck on March 21, 1999 at 11:42:40:







Я уже как-то задавал вопрос относительно "засыпания" задачи с сервером.


Повторю проблему : при загрузке нескольких задач на серверном компьютере последние постепенно вытесняют ресурсы у серверной задачи. Это приводит к недопустимому замедлению работы. Причем время ответа сервера может увеличиваться до десятков секунд.


У меня возникло подозрение, что сервер не использует в своих настройках приоритетные потоки обработки задач. В этой связи я сделал несложную программу для запуска сервера, в которой использован HIGH_PRIORITY_CLASS. Интересно, что ее потомок - сервер унаследовал приоритетность. Время его реакции на типовый запрос статистически достоверно сократилось с 2.4 сек до 0.3 сек. Кроме того, существенно притормозить время реакции на запросы путем нагрузки компьютера другими задачами не удалось.


В этой связи есть вопрос Автору. Почему не использовать в настройках сервера работу на приоритетных Hreads?


Привожу фрагмент текста "запускалки".


procedure TForm1.FormCreate(Sender: TObject);


var


lpApplicationName : Pchar; // pointer to name of executable module


lpCommandLine : Pchar; // pointer to command line string


lpProcessAttributes,lpThreadAttributes : PSecurityAttributes; // pointer to process security attributes


bInheritHandles : bool; // handle inheritance flag


dwCreationFlags : DWORD; // creation flags


lpEnvironment: Pointer;


lpCurrentDirectory: PChar;


lpStartupInfo_ : TStartupInfo;


lpProcessInformation_ : TProcessInformation;


st : array [1..10] of string;


stt : string;


i : byte;


begin


for i := 1 to 10 do st[i] := ParamStr(i);


lpApplicationName := PChar(st[1]);


stt := '';


for i := 2 to 10 do stt := stt + ' '+ st[i];


lpCommandLine := PChar(stt);


GetStartupInfo( lpStartupInfo_ );


{


lpApplicationName := 'C:\serv\fn2win95.exe';


lpCommandLine := ' -f4000 c:\1 c:\_box_ color dual 1 12';


}


{lpCommandLine := nil;}


lpProcessAttributes := nil;


lpThreadAttributes := nil;


bInheritHandles := true;


dwCreationFlags := CREATE_NEW_PROCESS_GROUP {DETACHED_PROCESS} or HIGH_PRIORITY_CLASS;


lpEnvironment := nil;


lpCurrentDirectory := nil;


CreateProcess(


lpApplicationName,


lpCommandLine,


lpProcessAttributes,


lpThreadAttributes,


bInheritHandles,


dwCreationFlags,


lpEnvironment,


lpCurrentDirectory,


lpStartupInfo_,


lpProcessInformation_);


end;






Пpишедшие ответы: