IceWarp Tudásbázis

Tudásbázis » 401

4.1. FastCGI használata

Készült: 2010.01.01, IceWarp Levelező és Kommunikációs Szerver 10

 

Amennyiben az IceWarp Levelező és Kommunikációs Szerver Web/Control szolgáltatása, azaz a WebMail nagy terhelés alatt, egyes esetekben nehezen reprodukálható hibákat vagy magas processzor terhelést okoz, esetleg nem működik megfelelően, javasolt a FastCGI használata mely lassabb de biztonságosabb web kiszolgálást eredményez.

 

Alapértelmezett beállítás

Az IceWarp Levelező és Kommunikációs Szerver PHP motorja alapértelmezetten ISAPI modulként fut. A PHP motor hibájaiból eredő problémák kezeléséhez szükséges lehet a Web/Control szolgáltatás újraindítása. Ugyanakkor a szolgáltatás újraindításával sajnos nem minden hiba oldható meg, ilyen esetekben (9.3.0 és afölötti verziók esetén) javasolt a FastCGI használata .

 

FastCGI használata

Az IceWarp Levelező és Kommunikációs Szerver Web szolgáltatása igény szerint folyamatosan újabb és újabb php.exe modult indít, majd a PHP kéréseket TCP socketeket használva továbbítja azoknak. PHP hiba esetén a szerver megállítja a php.exe modult, majd egy újat indít helyette anélkül hogy ez a web szerver működésére bármilyen kihatással lenne. A terhelés tehát megoszlik a futó php.exe modulokon.

 

FastCGI bekapcsolása

A FastCGI használatához a config mappában található webserver.dat fájlt kell módosítani. Ebben cserélje le az ÖSSZES php\php.dll kifejezést erre: (fastcgi);php\php.exe.

Eredeti (ISAPI)

<EXTENSIONS>
   <ITEM>
      <EXT>.php</EXT>
      <MODULE>php\php.dll</MODULE>

Módosított (FastCGI)

<EXTENSIONS>
   <ITEM>
      <EXT>.php</EXT>
      <MODULE>(fastcgi);php\php.exe</MODULE>

 

FastCGI beállítása

A beállítást a fenti webserver.dat tartalmazza.

<WEB>
  <OPTIONS>
    <ISAPI_RESTART>20000</ISAPI_RESTART>
    <ISAPI_RESTART500/>
    <ISAPI_RESTART500DATA/>
    <FCGI_INITSERVERS>8</FCGI_INITSERVERS>
    <FCGI_MAXSERVERS>0</FCGI_MAXSERVERS>
    <FCGI_MAXROUNDS>10000</FCGI_MAXROUNDS>
    <FCGI_RESTART500>3</FCGI_RESTART500>
    <FCGI_BINDIP>127.0.0.1</FCGI_BINDIP>
    <FCGI_CHECKRUNNING>1</FCGI_CHECKRUNNING>
    <FCGI_ENVIRONMENT>PHP_FCGI_MAX_REQUESTS=20000</FCGI_ENVIRONMENT>
    <HTTP10>0</HTTP10>
    <NOCHUNKEDENCODING>1</NOCHUNKEDENCODING>
    <COMPRESSTHRESHOLD>200</COMPRESSTHRESHOLD>
    <LOGFORMAT>c-ip cs-username date time cs-method cs-uri-stem cs-version sc-status bytes cs(Referer) cs(User-Agent)</LOGFORMAT>
  </OPTIONS>
<HOST>
...

A változók:

<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.

 

További beállítások

Ezen módosítások után az IceWarp Levelező és Kommunikációs Szerver > Web Szerver > Web Szerver > Script alatt az alábbi beállításokat kell látnia.

 

Az IceWarp Levelező és Kommunikációs Szerver > Web Szerver > Egyebek alatt a Hozzáférési szál értékét módosítsa 20-ra. (FastCGI esetén ez az érték maximalizálja a szerveren párhuzamosan futó php.exe folyamatok számát. A szerver teherbírásától függően ez az érték növelhető.)


 

Végül z IceWarp Levelező és Kommunikációs Szerver > Rendszer > Szolgáltatások > Általános alatt indítsa újra a Web/Control szolgáltatást.

Ezután lépjen be a Webmailbe majd ellenőrizze le a szerveren a Windows Feladatkezelőben (Task Manager) hogy a fenti beállítás szerinti 8db php.exe fut-e.

 

© IceWarp Minden jog fenntartva.