<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archivos de crash &#187; Endless Manifesto</title>
	<atom:link href="https://kadai.com.mx/tag/crash/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Un blog personal sobre muchas cosas, en especial videojuegos, descubrimientos y escritos al azar.</description>
	<lastBuildDate>Sat, 29 Feb 2020 21:11:30 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://kadai.com.mx/wp-content/uploads/2017/08/new-favicon-88x88.png</url>
	<title>Archivos de crash &#187; Endless Manifesto</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">126519727</site>	<item>
		<title>Error SIGSEGV en PHP 7.3 [Solución definitiva]</title>
		<link>https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/</link>
					<comments>https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/#respond</comments>
		
		<dc:creator><![CDATA[Kadai Crosshansen]]></dc:creator>
		<pubDate>Wed, 13 Mar 2019 17:37:38 +0000</pubDate>
				<category><![CDATA[Servidor]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[php7.2]]></category>
		<category><![CDATA[php7.3]]></category>
		<category><![CDATA[prefork]]></category>
		<category><![CDATA[vps]]></category>
		<guid isPermaLink="false">https://kadai.com.mx/?p=1506</guid>

					<description><![CDATA[<p>Recientemente, a principios de Marzo, realice una actualización de PHP 7.2 a PHP 7.3. Sin embargo, lo que iba a ser una actualización sin problemas, pronto comenzó a volverse más complicado. Los errores SIGSEGV en PHP aparecen una mañana Durante unos días libres que tuve, realice una actualización de PHP desde 7.2.12 (aproximadamente) a la [&#8230;]</p>
<p>The post <a href="https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/">Error SIGSEGV en PHP 7.3 [Solución definitiva]</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Recientemente, a principios de Marzo, realice una actualización de PHP 7.2 a PHP 7.3. Sin embargo, lo que iba a ser una actualización sin problemas, pronto comenzó a volverse más complicado.</p>



<span id="more-1506"></span>



<h2 class="wp-block-heading">Los errores SIGSEGV en PHP aparecen una mañana</h2>



<p>Durante unos días libres que tuve, realice una actualización de PHP desde 7.2.12 (aproximadamente) a la ultima versión disponible de PHP: 7.3.1</p>



<p>Todo salio bien en ese momento. Incluso las cosas funcionaban sin problemas, pero eso cambiaría a la mañana siguiente.</p>



<p>Fue entonces cuando este sitio web me arrojo un error 503. Así como otros más en esta VPS corriendo ubuntu.</p>



<p>Al revisar en los archivos de errores, en busca de alguna causa, solo encontraba lo siguiente:</p>



<pre class="wp-block-preformatted">(104)Connection reset by peer: [client XX.XX.XX.XX:XXXX] AH01075: Error dispatching request to : <br><br>AH01067: Failed to read FastCGI header</pre>



<p>Al mirar más de cerca, resulto que Apache servia contenido estático sin problemas. Solo las páginas generadas por PHP mostraban el error.</p>



<p>Cuando revise en los registros de PHP, la siguiente línea aparecía múltiples veces:</p>



<pre class="wp-block-preformatted">WARNING: [pool XXXXX] child XXXX exited on signal 11 (SIGSEGV - core dumped) after 30.977656 seconds from start</pre>



<p>Este error de SIGSEGV en PHP significaba que había sucedido una <a rel="noreferrer noopener" aria-label="Violación de Acceso (opens in a new tab)" href="https://es.wikipedia.org/wiki/Violaci%C3%B3n_de_acceso" target="_blank">Violación de Acceso</a> de memoria (<em>segfault o segmentation fault</em>) por parte de PHP.</p>



<p>¿Cómo era esto posible? ¿Qué lo estaba causando?</p>



<p>Una de las soluciones temporales que encontré fue el usar el siguiente comando:</p>



<pre class="wp-block-preformatted">systemctl restart php7.3-fpm</pre>



<p>Pero esta era una solución temporal. Ya que al poco tiempo el problema volvía a suceder. En algunos casos tan pronto como a los pocos segundos.</p>



<p>Esto se estaba volviendo una pesadilla.</p>



<h2 class="wp-block-heading">Apache2, prefork y el modulo PHP7.3: ¿Origen del problema?</h2>



<p>Durante mi investigación, detecte algo que pase por alto cuando actualice PHP a su versión 7.3: Me había agregado un nuevo módulo y cambiado el modo MPM de Apache.</p>



<p>El modo lo podemos ver con el siguiente comando en ubuntu:</p>



<pre class="wp-block-preformatted">apache2ctl -V</pre>



<p>¿Eso explicaba el problema?</p>



<p>De lo primero que me percate es que ese nuevo módulo, llamado solamente «PHP7.3», necesitaba que Apache2 corriera en modo Prefork.</p>



<p>No entendí por que de este movimiento, pero no era el cual había configurado en el servidor: Event.</p>



<p>Por lo cual procedí a desactivar PHP7.3 y cambiar Prefork por Event, ejecutando lo siguiente:</p>



<pre class="wp-block-preformatted">sudo a2dismod php7.3<br>sudo a2dismod mpm_prefork<br>sudo a2enmod mpm_event<br>systemctl restart apache2<br>systemctl restart php7.3-fpm</pre>



<p>De lo primero que me pude percatar, es que los errores de SIGSEGV en PHP bajaron dramáticamente con esto.</p>



<p>Aunque pronto descubriría que estos estaban lejos de desaparecer.</p>



<h2 class="wp-block-heading">El error SIGSEGV en PHP da tregua, pero no por mucho</h2>



<p>PHP 7.3 funciono de forma normal por algunos días. Pero eventualmente el error volvió a aparecer.</p>



<p>En los registros volvía a ver la señal 11 de SIGSEGV en PHP, lo cual me indicó que el problema tenia muchas posibilidades de seguir apareciendo.</p>



<p>Aunque era menos común, esto significaba que podía suceder en cualquier momento.</p>



<p>Buscando más a fondo, encontré quizá lo más profundo del origen del problema:</p>



<pre class="wp-block-preformatted">segfault at 6c6f4320 ip b4b92b37 sp bfe93df0 error 4 in opcache.so[b4b82000+6d000]</pre>



<p>Por fortuna, comencé a notar que no era el único con este problema. Usuarios del panel Plesk también <a rel="noreferrer noopener" aria-label="reportaron este problema (opens in a new tab)" href="https://talk.plesk.com/threads/php-7-3-fpm-dies-without-a-trace.350761/" target="_blank">reportaron este problema</a>. E incluso dicha empresa <a rel="noreferrer noopener" aria-label="no recomendando PHP7.3 por el momento (opens in a new tab)" href="https://support.plesk.com/hc/en-us/articles/360014718313-Domains-on-Plesk-PHP-7-3-are-down-Service-Unavailable" target="_blank">no está recomendando PHP7.3 por el momento</a>.</p>



<p>Lo cual, parece indicar que no hay una solución definitiva por ahora.</p>



<h2 class="wp-block-heading">Entonces, ¿Cómo solucionar las caídas de PHP?</h2>



<p>Como comenté antes, PHP constantemente arroja un error segfault o SIGSEGV el cual interrumpe la ejecución de cualquier recurso dinámico.</p>



<p>Sin embargo, esto se soluciona cuando se reinicia el servicio. Hacerlo manualmente no es una solución aceptable. Y crear un cronjob no me parece una buena idea.</p>



<p>Pero hay <a rel="noreferrer noopener" aria-label="otras alternativas (opens in a new tab)" href="https://serverfault.com/questions/575457/constantly-have-to-reload-php-fpm" target="_blank">alternativas</a> que ya ofrece PHP de forma nativa.</p>



<p>Por ejemplo, nosotros podemos editar el archivo php-fpm.conf (ya que es el modo FPM el cual fallaba para mi) y configurar lo siguiente:</p>



<pre class="wp-block-preformatted">/etc/php/7.3/fpm/php-fpm.conf :<br>emergency_restart_threshold = 3<br>emergency_restart_interval = 1h<br>process_control_timeout = 10s</pre>



<p>Con esto, hacemos que PHP este al pendiente por errores. Y cuando sucedan 3 errores en una hora, se reiniciará automáticamente.</p>



<p>De esta forma, el servicio se restablecerá de forma automática sin necesitar nuestra intervención.</p>



<p>Estos valores pueden ser fácilmente cambiados de acuerdo a tus propias necesidades. Solamente recuerda reiniciar el servicio de <em>php-fpm</em> una vez hagas cambios.</p>



<h2 class="wp-block-heading">Para concluir</h2>



<p>Si bien actualmente PHP7.3 parece tener problemas con su sistema de cache interno, con las correcciones adecuadas es posible usarlo sin problemas.</p>



<p>Pero hay algo muy importante que resaltar. Por ahora es mejor el mantenerse en PHP7.2 o tener múltiples versiones instaladas si es posible.</p>



<p>Ya que, a diferencia de la versión más nueva, PHP7.2 está mucho más maduro y este tipo de problemas son mucho más raros.</p>



<p>En mi caso, todavía sigo buscando que es lo que causa el error de SIGSEGV en PHP 7.3, y aunque sospecho que puede causarlo&#8230; no tengo una solución definitiva.</p>



<p>Lo que si, espero que esta pequeña guía le sea de utilidad a alguien. Ya que encontrar una solución, aunque parcial, fue una búsqueda de varios días.</p>



<h2 class="wp-block-heading">Actualización y solución definitiva</h2>



<p>Tras haber estado sufriendo el problema de los errores SIGSEGV por mucho tiempo con PHP 7.3, estos finalmente dejaron e suceder.</p>



<p>Sin embargo, la solución puede no ser tan trivial.</p>



<p>Resulta que con PHP 7.4, los errores simplemente desaparecieron. He estado observando los registros de PHP de forma continua por este error desde la actualización, pero esta no ha vuelto a suceder.</p>



<p>Lo cual me hace pensar que <strong>el problema no esta presente en PHP 7.4</strong>.</p>



<p>Si esta dentro de tus posibilidades, actualizar hacia la versión 7.4 de PHP es lo mejor. No solo trae más características si no que es hasta más seguro.</p>



<p>En caso de que no sepas como actualizar, pregunta con quien lleva tu hospedaje, este debe de poder ayudarte.</p>
<p>The post <a href="https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/">Error SIGSEGV en PHP 7.3 [Solución definitiva]</a> appeared first on <a href="https://kadai.com.mx">Endless Manifesto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kadai.com.mx/sigsegv-en-php-7-3-soluciones-al-problema/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1506</post-id>	</item>
	</channel>
</rss>
