Seja bem-vindo ao Centro de Suporte Silicom. Caso não saiba sua senha, favor usar a opção Senha perdida, do lado esquerdo. Se estiver em dúvida sobre qual o seu login ou não possuir cadastro, favor contatar nosso Depto. Comercial ou Suporte ou Depto. Técnico informando qual a sua organização.
Base de Conhecimento
Como configurar o servidor web/WebMail para FastCGI, visando melhor performance.
Publicado por Anderson Alves a 31 March 2009 01:47 PM

Este procedimento é válido apenas para plataforma Windows, plataforma Linux roda apenas FastCGI já por padrão, entretanto os ajustes de threads mencionados neste FAQ podem ser úteis.

O PHP tem problemas conhecidos que podem causar instabilidade em nosso web Server. Em versões anteriores à 10.1.2, por padrão, o Web Server usa ISAPI (DLL). A partir da versão 10.1.2 (novas instalações), o FastCGI já está definido por padrão. O FastCGI pode tornar o WebMail um pouco mais lento, mas mais estável, usando mapeamentos executáveis.

Antes de mais nada, você deve estar usando a versão 10.1.2 ou mais recente. Faça backup do arquivo icewarp\config\webserver.dat.

Através do console de administração IceWarp, acesse a opção Serviço Web e clique no botão Editar Arquivo.

Apenas verifique se existem tags que iniciam com <FCGI, como por exemplo <FCGI_THREADPOOL>. Provavelmente, o valor dessa tag FCGI_THREADPOOL estará como -1. Altere para 15, que é o default (ou seja, até 15 processos php.exe simultâneos) e salve o arquivo. Fica, então, da seguinte forma:

<FCGI_THREADPOOL>15</FCGI_THREADPOOL>

Verifique ainda, através do console, em Arquivo/Console API, buscando pela variável "webservice.appmaxthreads". O ideal é que esteja com valor 0, caso negative, altere para 0. A razão é que desejamos definir threads a nível de FastCGI e não globalmente.

Agora dê um duplo clique no site default do Serviço Web e navegue até a aba Mapeamento de Aplicativo (Scripting).

Desejamos alterar todos os Aplicativo (Extensions) , exceto [WCS.DLL], substituindo  “php\php.dll” por “(fastcgi);php\php.exe” (sem aspas). Na v10 isso é automático, bastando escolher a sintaxe de FastCGI (apontando para php.exe) a partir do menu pull-down, apresentando quando se clica em determinada extensão. Caso os mapeamentos já estejam definidos para php.exe, não é  necessário realizar qualquer alteração.

Veja como deve ficar, na tela abaixo:

Na versão Linux os mapeamentos devem ser da seguinte forma:

(fastcgi)var/php.socket;scripts/phpd.sh


Finalmente, dê um botão da direita no serviço Web, em Sistema/Serviços/guia Geral e escolhar Reiniciar módulo. Caso tenha problemas, renomeie o webserver.dat de volta ao anterior e entre em contato com nosso suporte.

Vale ressaltar que o serviço Web precisa estar em modo depurado para mostrar o detalhamento de threads em uso. Ative em Sistema/Serviços, no menu pulldown Tipo de logging, ao lado do serviço Web. Garanta que o seu sistema está sempre abaixo dos 15 threads definidos (no item FastCGI aparecerá no log free=15, por exemplo, indicando que há 15 threads livres).

Ressaltando, 15 threads costumam ser o suficiente e permite a conexão simultânea de centenas de usuários. O thread indica quantos php.exe's são abertos ao mesmo tempo. Para sistemas com muitas contas utilizando o webmail, pode ser necessário aumentar tal valor, sendo que cada processo php.exe costuma gastar cerca de 30 MB de memória.

Detalhamento técnico das tags

Segue detalhamento técnico das tags após <OPTIONS>, apenas para fins informativos. Não há nada a ser feito nessa etapa.

<FCGI_INITSERVERS> - Number of instances of php.exe which are running immediately after start.

<FCGI_MAXSERVERS> - Maximal number of running instances - not implemented yet. Use Webserver thread pooling to limit number of running instances!!

<FCGI_BINDIP>    - IP address bound to php.exe and used to communication between IceWarp server and PHP. This value has to be set. Usually there is no need to put other value than 127.0.0.1 here.

<FCGI_ENVIRONMENT> - Environment variables, which are sent to php.exe to control its behaviour.

PHP_FCGI_MAX_REQUESTS - This environment variable tells php.exe to quit automatically after given number of processed requests.

<FCGI_MAXROUNDS> - Similar option as PHP_FCGI_MAX_REQUESTS, but the counting of requests and killing of instances is responsibility of IceWarp server and not php.exe itself.

<FCGI_CHECKRUNNING> - Boolean value - if set to true, each instance of php.exe is checked, whether it is running or not, before trying to send data to it. This brings slowdown and it is not needed when PHP_FCGI_MAX_REQUESTS is greater than FCGI_MAXROUNDS.

<FCGI_TIMEOUT> - time in ms saying how long IW server will wait for PHP to process a request. If php is unable to do its work it in that time you will see in the web log error like
SYSTEM [15B0] 09:07:00 FCGI: (worker 6960) Timeout 150000 ms expired while waiting for FCGI response (Processed = 13, Running=1)
SYSTEM [15B0] 09:07:00 Internal Server Error: in cooperation with cgi/fastcgi, Original request:
POST /-.._._.--.._1308890355/webmail/server/webmail.php HTTP/1.1

<FCGI_RESTART500> - determines the value of returned HTTP 500 error when IW server will restart php thread. E.g. <FCGI_RESTART500>3</FCGI_RESTART500> means that if the thread returns the 500 3rd times then IW kills it (and starts it again).

 

(202 voto(s))
Útil
Não útil

Comentários (0)