Cómo optimizar el método de configuración FastCGI en el entorno Windows IIS67
Cómo optimizar el método de configuración FastCGI en Windows 2003 IIS6
Archivo de configuración de optimización FastCGI fcgiext.ini, que se encuentra en windir\system32\inetsrv. Intentaremos configurarlo de dos maneras: script de administración FastCGI fcgiconfig.js; edición del Bloc de notas fcgiext.ini.
Configuración del script FastCGI
Abra su línea de comando cmd.exe y cambie al directorio windir\system32\inetsrv. Copie el siguiente contenido, presione Enter y ejecute lo siguiente para completar. Configure los siguientes parámetros según sea necesario.
1 cscript fcgiconfig.js -set -section: "PHP" -InstanceMaxRequests: 5000
2
3 cscript fcgiconfig.js -set -section: " PHP" -EnvironmentVars: PHP_FCGI_MAX_REQUESTS: 5000
4
5 cscript fcgiconfig.js -set -section: "PHP" -RequestTimeout: 360
6 p>
7 cscript fcgiconfig.js -set -section: "PHP" -ActivityTimeout: 120
El significado del script es:
Establecer el reciclaje del grupo de aplicaciones. La cantidad de solicitudes de proceso FastCGI alcanza el valor de InstanceMaxRequests de 5000 y el grupo de aplicaciones se reciclará automáticamente. El valor predeterminado es 1000.
Cuando la variable de entorno PHP_FCGI_MAX_REQUESTS alcance 10000, el grupo de aplicaciones se reciclará automáticamente.
RequestTimeout establece el tiempo de espera de la solicitud, que es el tiempo máximo permitido para la solicitud. Si la solicitud del proceso FastCGI excede esta configuración, se prohibirá. El valor es 90 segundos.
ActivityTimeout especifica el tiempo activo máximo solicitado por el proceso FastCGI. Dentro del tiempo establecido, si no hay comunicación entre el proceso FastCGI e IIS, el proceso finalizará. El valor predeterminado es 70 segundos.
Nota: El comando script es una configuración global para todos los sitios web PHP que ejecutan FastCGI en el servidor. Por lo tanto, para máquinas virtuales de múltiples sitios, es relativamente ideal configurar InstanceMaxRequests en la cantidad de sitios web PHP X500.
500 es una variable. Si hay 10 sitios web, entonces 200X50=5000, y así sucesivamente. Para servidores con mucho tráfico, no es una buena idea establecer un valor demasiado pequeño y reciclar el grupo de aplicaciones con frecuencia. ——Aunque, el sistema recicló muchos recursos.
Si el valor de RequestTimeout es demasiado grande, sin duda permitirá que se ejecuten más solicitudes que consumen recursos del sistema; es mejor configurar ActivityTimeout en 120 segundos de inactividad antes de desconectarse, o 30 segundos de inactividad antes de desconectarse, que varía de persona a persona.
Copiar y pegar es adecuado para personas perezosas
Configuración del archivo de configuración FastCGI fcgiext.ini
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS: 10000
p>RequestTimeout=360
ActivityTimeout=120
Copie el código anterior al final de fcgiext.ini y guárdelo.
Configuración optimizada de PHP5.3.6
La configuración php.ini de PHP5.3.6 también se divide en dos partes: la configuración de FastCGI; Mi PHP5.3.6 está instalado en C:\PHP.
PHP.ini sobre la parte FastCGI
fastcgi.impersonate = 1
cgi.fix_pathinfo=1
cgi.force_redirect = 0
La parte de PHP.ini sobre sí mismo
1. Busque extension_dir, elimine el comentario anterior y modifíquelo a:
1 extension_dir = "c:/php". /ext"
2. Busque date.timezone, elimine el comentario anterior ";" y modifíquelo a:
1 date.timezone = "asia/shanghai" p>
3. Busque a continuación y luego elimine la “solución” al frente;
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
De esta manera, su PHP básicamente puede funcionar sin problemas. En cuanto a algunas modificaciones más avanzadas, no necesitamos estudiarlas en profundidad, ¿verdad?
Optimice el archivo de configuración fastcgi fcgiext.ini en Windows 2003 IIS6 para reducir la cantidad de procesos php-cgi.exe y el tamaño de la memoria
Escuché que fastcgi es mejor que isapi, así que lo instalé en el servidor. El entorno de configuración es Windows 2003 IIS6 fastcgi (FCGI) PHP5.2.17. Descubrí que funciona en modo FastCGI. PHP ocupará cada vez más memoria. Si el volumen de acceso es un poco mayor, habrá N procesos php-cgi más. En la misma situación, puede ser varios cientos de MB más que cuando se usa. Modo isapi. La memoria de mi servidor es solo 2G.
Busqué en línea y descubrí que muchas personas enfrentan el mismo problema. Una explicación más formal de los funcionarios de PHP es: No hay pérdida de memoria en el proceso php-cgi. php-cgi reciclará toda la memoria utilizada por el script al final de cada solicitud, pero no la liberará al sistema operativo. , pero continuará retenido para la próxima solicitud de PHP. Probablemente esto se haga para reducir la fragmentación de la memoria o para resolver el tiempo incontrolable necesario para solicitar memoria del sistema y luego liberarla al sistema operativo. Sin embargo, si por casualidad una solicitud PHP utiliza una operación de memoria grande como ftp o zlib, php-cgi ocupará continuamente una gran parte de la memoria del sistema y no podrá usarse.
La solución a este problema es optimizar los parámetros del archivo de configuración fastcgi en la configuración del servidor web.
Los parámetros relacionados con el proceso php-cgi se pueden configurar en el archivo C:\WINDOWS\system32\inetsrv\fcgiext.ini, como por ejemplo:
[Tipos] p>
php = PHP
[PHP]
ExePath=C:\php-5.3.8-nts-Win32-VC9-x86\php-cgi.exe
maxInstances=100
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=600
ActivityTimeout= 900
En la configuración anterior:
ExePath especifica la ruta al analizador FastCGI,
instanceMaxRequests especifica el número máximo de solicitudes que cada instancia puede manejar,
maxInstances especifica el número máximo de instancias que se pueden iniciar.
EnvironmentVars crea una variable de entorno PHP_FCGI_MAX_REQUESTS. El valor predeterminado se establece en 10000.
requestTimeout especifica el. tiempo de espera de solicitud de 600 segundos,
activityTimeout especifica el tiempo de espera de la sesión activa como 900 segundos.
El siguiente es el valor recomendado:
maxInstances=
Cambiar este valor a un valor menor
Recomendación
Memoria de 512M Cambiar maxInstances=50
Cambiar maxInstances=80 para memoria de 1G
Cambiar maxInstances=140 para memoria de 2G
Modificar nuevamente
InstanceMaxRequests =
Cambiar este valor a un valor menor
Recomendación
Cambiar InstanceMaxRequests=200 para 512 M de memoria
Cambiar InstanceMaxRequests= 300 para memoria 1G
Cambiar InstanceMaxRequests=500 para memoria 2G
Después de cambiar, reinicie IIS.
instanceMaxRequests PHP_FCGI_MAX_REQUESTS Estos dos parámetros determinan el número máximo de solicitudes PHP aceptadas después de que se crea un proceso php-cgi. La configuración predeterminada en lighttpd es 10000. En otras palabras, este proceso php-cgi finalizará cada vez que acepte 10,000 solicitudes PHP, liberará toda la memoria y el proceso de administración lo reiniciará. Si lo reduce, por ejemplo, a 100, el ciclo de reinicio de php-cgi se acortará considerablemente y el tiempo de impacto de los problemas causados por operaciones accidentales de alta memoria también se acortará.
maxInstances Este parámetro especifica el número máximo de instancias que se pueden iniciar, es decir, el número de procesos php-cgi.exe. Si lo reduce, por ejemplo, a 100, como máximo solo habrá el proceso php-cgi.exe en el proceso del administrador de tareas, y la memoria total ocupada por php-cgi.exe se reducirá considerablemente.
El servidor que estoy usando ahora es un sistema operativo Windows 2003 con memoria 4G. Un programa php-cgi.exe ocupa entre 7 y 25 M de memoria. Ajusté el valor de maxInstances a 300 para reducir la cantidad de. Procesos php-cgi.exe El número total y el uso de memoria también se han reducido, y la velocidad de respuesta es mucho más rápida que antes. Al menos la cantidad de ajuste se puede determinar de acuerdo con la cantidad de visitas a su sitio.