Necesito, para que mysql use páginas grandes, establecer un ulimit. Lo he hecho en limits.conf. Sin embargo, limit.conf (pam_limits.so) no se lee para init, solo para shells "reales". Resolví esto antes agregando un "ulimit -l" a la función de inicio initscript. Necesito algún tipo de forma repetible para hacer esto, ahora que las cajas se administran con el chef, y no queremos tomar el control de un archivo que en realidad es propiedad del RPM.
18
Respuestas:
Los 4 pasos pueden cambiar los límites de su sistema de inmediato, y aún pueden funcionar después de reiniciar. Puede cambiar el número "102400" por el número máximo de archivos abiertos en su sistema Linux como desee. y
cargar en la configuración de sysctl desde el archivo especificado o /etc/sysctl.conf si no se proporciona ninguno.
fuente
*
no funciona para elroot
usuario, tendrá que especificarroot
explícitamente .../etc/sysctl.conf debería poder establecer los elementos ulimits. No he podido probar esto bien, pero la encuesta dice que deberías poder parar después de configurarlo en sysctl.conf.
Sin embargo, he encontrado varios temas que muestran que todavía es un problema y mi equipo y yo hemos discutido algunas opciones al respecto, hemos encontrado dos posibles soluciones.
Opción 1: la mayoría de las fuentes de rhel initscripts /etc/init.d/functions, puede cambiar la configuración de ulimit allí
Opción 2: init afirma que / etc / initscript se obtiene cada vez que init genera lo que sea, vea: http://linux.die.net/man/5/initscript . Curiosamente, dicen que es donde la gente puede establecer ulimit =)
fuente
Fragmento de receta autónomo basado en esta url:
Fragmento de receta:
fuente
Mi solución fue simplemente hacer esto en nuestra receta de chef:
Esto hace
ulimit -l
que se configure para todos los initscripts, lo que puede ser indeseable en algunos entornos, pero está bien para el mío.En un mundo perfecto, obtendría el RPM actualizado para incluir a
/etc/sysconfig/mysqld
, y pondría el mismo comando ulimit -l allí.fuente
No estoy seguro de cuán específico de la distribución es esto, pero acabo de incorporar un aumento del límite de seguridad al usar
/etc/security/limits.d/20-somefile.conf
Ubuntu.En lugar de tener que modificar un archivo existente, tengo una plantilla ERB en mi libro de cocina, establezco atributos predeterminados en un archivo de atributos y luego no tengo que preocuparme por usar bloques de rubí con cosas "insert_line_if_no_match", que parece un poco más complejo y complejo la receta es un poco más legible como esta:
y luego este es mi archivo de plantilla:
fuente
según la página de manual, ulimit está en desuso. Necesitas usar setrlimit. El problema es que es una llamada al sistema en lugar de un comando bash.
Tuve este problema con el supervisor y esto es lo que descubrí. Si el proceso no tiene un archivo de configuración que le permita hacer una llamada a la llamada del sistema setrlimit (). Configúrelo con ulimit en su script /etc/init.d bash. Ese es el script de servicio que inicia su proceso.
Si el proceso tiene un archivo de configuración, como el supervisor d, puede usar ese archivo de configuración para establecer el número de archivos y hacer que el proceso realice la llamada directamente a setrlimits ().
Supervisor: http://supervisord.org/configuration.html#supervisord-section-settings
TomcaT: http://www.jayway.com/2012/02/11/how-to-really-fix-the-too-many-open-files-problem-for-tomcat-in-ubuntu/
fuente
La forma de RedHat, como se describe en el artículo 253043 (se requiere suscripción) es agregar declaraciones ulimit apropiadas a
/etc/sysconfig/<service name>
. Por ejemplo:(Use el archivo existente para su servicio en lugar de myServiceName).
Para los demonios que comienzan sin usar el script "sysconfig" de RedHat, necesitará agregar las líneas ulimit apropiadas al script de inicio del demonio.
fuente
Intente configurarlo en el archivo /etc/sysctl.conf
fuente
De hecho, escribí un libro de cocina de chef privado que se utiliza para establecer ulimit para nosotros y funciona bastante bien. Para ubuntu, encontramos que se requiere el siguiente truco si desea una configuración global de ulimit:
Agregue lo siguiente a su sesión común:
y en limit.conf debes tener lo siguiente:
La parte raíz es importante ya que parece que algunos scripts de inicio no funcionarán correctamente. Así que tenemos un libro de cocina de chef que configura lo siguiente y funciona muy bien.
Otra opción que solíamos usar para Tomcat era implementar Tomcat y luego sobrescribir el script de inicio con una costumbre para la que estableceríamos el ulimit y reiniciar tomcat. Esto funciona muy bien, pero es un poco más hacky que el primero.
Espero que esto ayude, y tal vez algún día pueda abrir el libro de cocina que tenemos internamente ya que es bastante simple pero podría ser útil para otros como usted.
fuente