miércoles, 24 de noviembre de 2010

[Devblog] Problemas de conexión




























Fuente: Devblog Dofus [ES] - Sir-Dal

Desde hace algunos días/semanas, en los momentos más populares (durante la tarde y el fin de semana) la conexión al juego se vuelve fastidiosa. El equipo de DOFUS está consciente de este problema y trabaja para mejorar esta situación.

Se ha identificado un bug que, en periodos de gran catidad de conexiones, provocaba una dificultad a la hora de conectarse y aparecía el cartel de “El servidor tarda mucho en responder. Esperar/interrumpir”.
Se ha trabajado durante semanas para explorar y localizar el problema, que se podía encontrar en numerosos puntos de la arquitectura (material, firewall, red, client flash, servidor, etc…).

Este bug se situaba al nivel del motor de red de los servidores y fue relativamente difícil de localizar, pero existía desde las primeras versiones de DOFUS 2. Y fue solo en los últimos tiempos que por la sobrecarga de la arquitectura de conexión que se finalmente se reveló (claramente por numerosos bots relativamente mal programados, provocando un impacto aplastante en el rendimiento del servidor, con cientos de desconexiones/reconexiones por minuto para algunos). Como les he comunicado en los anuncios oficiales el viernes 19/11 se aplico una actualización que corrige el problema.

Gracias a la actualización, todas las conexiones de los jugadores se conectan al juego normalmente. Al principio de la tarde del viernes habrán notado que se generaron numerosas filas de espera debido a la actualización porque todos los jugadores y bots se pudieron conectar finalmente bien, sin sufrir del bug. Hemos vigilado toda la arquitectura y poner en la lista negra a varios rangos de IP donde provenían las conexiones abusivas (bots, flood de servers, etc…) a lo largo de la tarde su pudo llegar a una situación normal alrededor de las 21:30 (hora de España). Como dato extra… se bloquearon más de 143000 IPs maliciosas.

El sábado, el problema volvió a suceder 3 veces durante el día. Esta vez más complejo, porque las conexiones demasiado numerosas provocaron una caída completa de la conexión al juego, y nuestro equipo de guardia debió lanzar nuevamente varias veces los servidores. Hemos podido implementar una serie de verificaciones para evitar los bloqueos de larga duración.
Para eso, la arquitectura de conexión, cuando hay una sobrecarga de conexiones de jugadores, se bloquea algunas decenas de segundos para tratar las conexiones en curso. Intentaremos explicar: Más conexiones entrantes, mas difícil para la arquitectura de tratarlas, entonces mas conexiones se apilan y el fenómeno empeora. Para evitar esa degradación, desde ahora cuando demasiadas conexiones se encuentran en curso, el servidor se bloquea para tratar las conexiones activas más eficazmente, luego rápidamente se vuelve a abrir y acepta de nuevo jugadores. Entonces, el bloqueo se puede repetir varias veces hasta que trata todas las conexiones. Si cuando se conectan obtienen el mensaje “servidor en mantenimiento” deben esperar unos 30 segundos y reintentar.

Tenemos pensado integrar esa función directo en el juego, así solo deberán esperar algunos segundos y la conexión se realizará de forma automática. El mensaje también será diferenciado entre la frase “bloqueado” y los reales mantenimientos programados.
Trabajamos también de forma continua sobre varias cosas, cada una aporta mejoras al rendimiento:

-          El rendimiento de las bases de datos y de los servidores
Para permitir a más jugadores acceder al juego, tanto la arquitectura, el material y el programa evoluciona día a día.
-          La paralelizacion de servidores
El objetivo es separar las diferentes tareas efectuadas en diferentes servidores, para mantener a los servidores lo más ligeros posibles, por lo tanto más rápidos. Algunas tareas invisibles para los jugadores son efectuadas por los mismos servidores, al separar estas tareas y pasándolas a otros vamos a volver más rápidas las fases de acceso al juego.

-          La optimización del código del servidor
Para reducir el consumo de memoria, las potenciales fugas, u mejorar el rendimiento de los servidores, los desarrolladores retoman regularmente las partes de programas del servidor. Mejorando el rendimiento y la estabilidad del código, los servidores serán mas estables, mas reactivos, y necesitarán menos mantenimientos.

-          La lucha contra los bots
Luego de un período de calma (el tiempo que tardaron en adaptarse con la salida de DOFUS 2), numerosos bots volvieron al juego. Si los bots son generalmente baneados y expulsados algunas horas luego de su creación, su comportamiento sobrecarga los servidores. Hemos visto que por ejemplo, algunos bots intentan miles de conexiones por minuto (para una sola cuenta), y cuando la cuenta es baneada, el bot continua a intentar la conexión, y cada vez que lo hace el servidor debe procesar el rechazo. Cuando el fenómeno se multiplica con un gran número de bots, la carga del servidor se vuelve muy grande y el rendimiento del servidor se degrada. Para eso, la paralelización va a permitir tratar mas peticiones al mismo tiempo, pero también trabajamos para bloquear más rápidamente las IP que son el origen de esas sobrecargas para aligerar los servidores

0 comentarios:

Publicar un comentario

Diseño por:
Angel of Ice