No hace mucho tiempo escribí sobre un punto muerto aquí: PDOException: SQLSTATE [40001]: Error de serialización: 1213 Punto muerto encontrado al intentar obtener el bloqueo;
A pesar de todo lo que mi equipo de desarrollo intenta hacer, todavía recibimos errores como este:
PDOException: SQLSTATE [40001]: error de serialización: 1213 Deadlock encontrado al intentar obtener el bloqueo; intente reiniciar la transacción: INSERT INTO {location_instance} (nid, vid, uid, genid, lid) VALUES (: db_insert_placeholder_0,: db_insert_placeholder_1,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4); Array ([: db_insert_placeholder_0] => 1059 [: db_insert_placeholder_1] => 1059 [: db_insert_placeholder_2] => 0 [: db_insert_placeholder_3] => cck: field_item_location: 1059 [: db_insert_placeholder_4] => 1000_) # (1000) /var/www/website.com/sites/all/modules/location/location.module).
A pesar de la tabla específica en ese ejemplo, obtenemos este error en otras tablas.
Aquí está mi situación. He tomado un gran proyecto universitario. En cualquier momento hay 50,000 residentes del campus que usan el sistema diariamente. Además de eso, estoy migrando cientos de miles de elementos de contenido tanto manualmente como a través de un código de módulo personalizado (migración de los datos antiguos de la universidad) a este nuevo sitio de Drupal 7.
Este error nos está matando, hasta el punto de que estamos casi listos para desechar el trabajo de los últimos años e ir con otra cosa si Drupal no puede manejar este tipo de carga.
Pero esa es más o menos mi pregunta: ¿cómo puede Drupal manejar este tipo de carga? ¿Cómo puedo organizar mi flujo de trabajo para poder manejar tanta actividad? ¿Es este un problema de Drupal? ¿Un problema de base de datos?
Específicamente, estoy ejecutando Ubuntu, LAMP stack 16GB RAM. Estoy abierto a cualquier sugerencia, ya sea relacionada con Drupal, relacionada con la base de datos, relacionada con la configuración del servidor o un flujo de trabajo diferente para trabajar dentro de las capacidades de Drupal, así que siéntase libre de sugerir cualquier cosa si tiene experiencia con esta gran actividad.
fuente
Respuestas:
Trabajo para la universidad de Stanford y he estado haciendo cosas similares. Constantemente tenemos que cargar más de 100,000 nodos de forma regular. Hemos estado trabajando en nuestro propio código de carga personalizado durante 2 años y ahora hemos podido acelerar el proceso bastante grande usando pcntl_fork. Lo único que debe recordar es cerrar todas las conexiones de socket antes de invocar la bifurcación. Por ejemplo, debe cerrar su conexión mysql, la conexión memcache e incluso la conexión mongo. Drupal creará automáticamente nuevas conexiones cuando no exista una. En cuanto al problema del punto muerto, pudimos solucionar ese problema poniendo
innodb_locks_unsafe_for_binlog = 1
.fuente
La respuesta es: Configure su archivo MySQL my.cnf correctamente.
Después de un poco más de una semana de investigación, descubrí que Drupal 7 puede manejar este tráfico de entrada simultáneo.
Estas Deadlock PDOExceptions estaban relacionadas con el archivo MySQL my.cnf no optimizado correctamente. Con la ayuda del grupo Drupal High Performance y otras fuentes, nuestro equipo no ha tenido un solo punto muerto desde que implementó la nueva configuración de MySQL. Probamos nuestros scripts por lotes para simular hasta 500 usuarios actuales que guardan contenido sin ningún problema. Mira el hilo aquí.
http://groups.drupal.org/node/260938
Específicamente, Dalin sugirió usar un asistente para obtener un archivo de configuración base basado en las especificaciones del servidor y los tipos de tabla. Después de usar esto, incluso sin más ajustes, los puntos muertos se detuvieron. Aquí hay un enlace al asistente si desea probarlo: https://tools.percona.com/wizard
Estaré encantado de publicar el archivo my.cnf si alguien lo encuentra útil.
Aunque el problema de Deadlock ya no es un problema, ahora estamos recibiendo este error con mucha frecuencia:
¿Podría ser esto también un problema de configuración de MySQL?
fuente
http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html esta página de mysql sugiere qué hacer cuando encuentre el punto muerto.
Al ajustar su configuración de mysql, lo ayudará a resolver este problema.
fuente