Un usuario pregunt贸 馃憞
Ejecut茅 una pista de apilamiento en el sitio de un cliente usando este plugin y la versi贸n pro.
Estamos viendo que los procesos secundarios PHP-FPM tardan de 10 a 30 segundos y m谩s en obtener una sesi贸n. Parece estar esperando hasta que el sistema operativo libere la manada.
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins/includes/Schedule.php", {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins/includes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED", {st_mode=S_IFDIR|0710, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED", {st_mode=S_IFDIR|0710, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins/includes/Schedule.php", O_RDONLY) = 15
fstat(15, {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
fstat(15, {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
fstat(15, {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
mmap(NULL, 1093, PROT_READ, MAP_SHARED, 15, 0) = 0x7f3616e0b000
munmap(0x7f3616e0b000, 1093) = 0
close(15) = 0
open("/var/lib/php/session/sess_ht2uft2nq7nd0g3casrc8ge2vg", O_RDWR|O_CREAT|O_NOFOLLOW, 0600) = 15
fstat(15, {st_mode=S_IFREG|0600, st_size=730, ...}) = 0
getuid() = 10000
flock(15, LOCK_EX^Cstrace: Process 13399 detached
驴Puede eliminar la sesi贸n durante () si no hay m谩s tareas para programar o tal vez hay una configuraci贸n de rehacer que permitir谩 a redis administrar y almacenar los datos?
Gracias, Wil.
(@codexpert)
Hace 1 a帽o, 3 meses
Hola @developerwil, Gracias por se帽alar esto. Arreglaremos esto lo antes posible.
El sarampi贸n, codexpert
https://codexpert.io
(@neilatw)
Hace 1 a帽o, 3 meses
Hola Codexpert, represento al cliente de Wil que tiene problemas importantes con el tema anterior.
驴Puedo preguntar cu谩ndo es probable que se publique un acuerdo?
Gracias
Neil Atwood
(@codexpert)
Hace 1 a帽o, 3 meses
Hola @neilatw, Nuestro equipo de desarrollo est谩 trabajando en ello y esperamos que puedan incluirlo en la pr贸xima versi贸n: ETA a principios del pr贸ximo mes.
Gracias
(@neilatw)
Hace 1 a帽o, 2 meses
Hola chicos, 驴Alg煤n avance en este tema? Esto todav铆a est谩 matando nuestro sitio con regularidad, y estamos entrando en nuestra temporada alta. Realmente quiero una soluci贸n permanente para esto lo antes posible.
Gracias
(@ mukto90)
Hace 1 a帽o, 2 meses
Hola @neilatw, Hoy hemos lanzado la v2.1.2. 驴Puede confirmar si resuelve su problema?
Gracias
(@desarrolladorwil)
Hace 1 a帽o, 2 meses
Hola @codexpert
Acabo de ejecutar el c贸digo diff en 2.1.1 y 2.1.2 y la 煤nica diferencia que veo es que est谩 configurando el par谩metro recordar sus cookies wp en verdadero.
Esto no aborda la mayor铆a de las sesiones PHP que crea en el modo /includes/Schedule/Schedule.php __construct ().
No hay lugar en el c贸digo en el que use session_destroy () para eliminar estas sesiones php que se ejecutan en todos los subprocesos secundarios de Apache.
Aqu铆 est谩 mi c贸digo revisado que parece ayudar con el problema; tenga en cuenta que verifico si hay alguna URL programada para ejecutarse y si no elimino la sesi贸n PHP creada.
<?php
/**
* All trigger facing functions
*/
namespace codexpertShare_Logins;
/**
* if accessed directly, exit.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* @package Plugin
* @subpackage Schedule
* @author Nazmul Ahsan <[email protected]>
*/
class Schedule extends Hooks {
/**
* Constructor function
*/
public function __construct( $plugin ) {
$this->name = $plugin['Name'];
$this->ncrypt = ncrypt();
if ( session_status() == PHP_SESSION_NONE ) {
session_start();
}
}
public function run() {
$_scheduled_urls = cx_get_scheduled_urls();
if( is_array( $_scheduled_urls ) && count( $_scheduled_urls ) > 0 ) :
foreach ( $_scheduled_urls as $url ) {
echo "<script src='{$url}'></script>";
if( defined( 'CXSL_DEBUG' ) && CXSL_DEBUG ) {
@parse_str( $url );
cx_add_log( 'trigger', 'outgoing', $this->ncrypt->decrypt( $user_login ), cx_get_route_home( $url ) );
}
}
cx_clean_scheduled_urls();
endif;
// ZPD 21/10/2019 - destroy session if scheduled URLs are empty
if( empty( cx_get_scheduled_urls() ) ) {
session_destroy();
}
}
}
驴Puede enviar estos comentarios a los desarrolladores y pedirles que eliminen correctamente las sesiones PHP que est谩n creando? Est谩 creando un gran problema de memoria y php en mi servidor cliente.
El problema es crucial hasta el punto en que ahora nos vemos obligados a considerar plugins de SSO alternativos.
Me complace trabajar con sus desarrolladores para resolver este problema. Me puedes encontrar en https://github.com/DeveloperWil
Saludos, Wil.
(@ mukto90)
Hace 1 a帽o, 2 meses
Gracias @developerwil. Veremos esto.
(@desarrolladorwil)
Hace 1 a帽o, 2 meses
Despu茅s de instalar New Relic en el servidor para averiguar por qu茅 est谩 ocupando tantos recursos, descubr铆 que session_start () tarda entre 11 y 12 segundos en iniciarse.
Debido a que estos se ejecutan a trav茅s de admin-ajax.php, est谩n bloqueando efectivamente el script PHP para que no contin煤e, lo que resulta en un alto uso de memoria y un l铆mite de tiempo de los subprocesos secundarios de Apache.
Esto se confirm贸 en los siguientes hilos:
https://stackoverflow.com/questions/13772074/session-start-takes-very-long-time
http://konrness.com/php5/how-to-prevent-blocking-php-requests/
– SNIP – PHP Problem escribe sus datos de sesi贸n en un archivo de forma predeterminada. Cuando se solicita un script PHP que inicia la sesi贸n (session_start ()), este archivo de sesi贸n se bloquea. Esto significa que si su p谩gina web realiza m煤ltiples solicitudes de scripts PHP, por ejemplo, para cargar contenido a trav茅s de Ajax, todos los intentos pueden ser bloquear la sesi贸n y bloquear las otras solicitudes para completar.
Todas las dem谩s solicitudes se colgar谩n en session_start () hasta que se desbloquee el archivo de sesi贸n. Esto es especialmente malo si una de sus solicitudes de Ajax es relativamente larga.
Resoluci贸n El archivo de sesi贸n permanece bloqueado hasta que se completa la secuencia de comandos o la sesi贸n se cierra manualmente. Para evitar que se bloqueen varias aplicaciones PHP (que requieren datos de $ _SESSION), puede iniciar la sesi贸n y luego cerrarla. Esto desbloquear谩 el archivo de sesi贸n y permitir谩 que las otras solicitudes contin煤en ejecut谩ndose, incluso antes de que se complete la aplicaci贸n inicial. FIN DE SNIP –
Tengo el archivo log-logins modified functions.php line 181:
if( ! function_exists( 'cx_set_scheduled_urls' ) ) :
function cx_set_scheduled_urls( $urls ) {
$_SESSION['_share-logins_scheduled_urls'] = base64_encode( serialize( $urls ) );
// ZPD 23/11/2019 - close the session
session_write_close();
}
endif;
share-logins-pro includes functions.pgp l铆nea: 149
if( ! function_exists( 'cx_set_scheduled_urls' ) ) :
function cx_set_scheduled_urls( $urls ) {
$_SESSION['_share-logins_scheduled_urls'] = base64_encode( serialize( $urls ) );
// ZPD 23/11/2019 - close the session
session_write_close();
}
Para cerrar la sesi贸n d茅jelo disponible para su lectura.
Eventualmente, funcionar铆a mucho m谩s r谩pido si se almacena en el SS.
Saludos, Wil.
(@ mukto90)
Hace 1 a帽o, 2 meses
Gracias @developerwil. Estamos trabajando en ello y lo incluiremos en la pr贸xima versi贸n, ETA, la semana que viene.
(@codexpert)
Hace 1 a帽o, 2 meses
Hola @developerwil, Gracias por avisar.
Como es un tema importante, hemos lanzado una versi贸n m谩s reciente. Actualice sus plugins.
Nota: como cr茅dito, indicamos su nombre en el c贸digo.
Tuyo sinceramente
驴Solucion贸 tu problema??
0 / 0