
Esta pregunta estaba originalmente en stackoverflow.com, pero me dijeron que podría obtener una mejor respuesta en este sitio...
Muy pronto configuraré un servidor web para un cliente que tiene un sitio muy ocupado. Tiene un foro (ejecutado enForo de máquinas simplesSMF escrito en PHP) que realmente no se puede cambiar. Quiero mover esto a un servidor privado virtual independiente, ya que está muy ocupado con alrededor de 40.000 visitas al día con más de 400 publicaciones al día. Con la versión de SMF que tiene (la mejor y más estable versión de producción 1.1) necesita MySQL para ejecutarse, por lo que no puedo cambiarlo a PostgreSQL (que tal vez preferiría)
Al instalar MySQL Server en Ubuntu Server 10 LTS, tengo curiosidad por saber si hay algo que pueda hacer para garantizar que sea lo más eficiente posible. Quiero ejecutar lo más rápido posible para mantener bajos los recursos y garantizar que podamos mantenernos por debajo de nuestro límite de recursos para el servidor. Con un servidor privado virtual, tengo la opción de cambiar los recursos en un instante, pero quiero asegurarme de que MySQL Server esté configurado de la manera más eficiente posible, ya que no soy exactamente un experto en ese tipo de cosas.
Estaba investigando un poco y encontré un artículo que sugiere hacer esto para garantizar que sea eficiente:
# open mysql conf and set these settings:
# key_buffer = 16k
# max_allowed_packet = 1M
# thread_stack = 64K
nano /etc/mysql/my.cnf
# restart mysql
/etc/init.d/mysql restart
¿Alguien puede darme algunos consejos, sugerencias, enlaces o conocimientos sobre este tema?
Respuesta1
En primer lugar; Janne tiene razón: 40.000 lecturas y 400 escrituras al día son carga cero. No debería tener absolutamente ningún inconveniente de rendimiento con casi cualquier tipo de configuración.
Estoy ejecutando una configuración similar en un VPS con SMF. Descubrí que se beneficia mucho de los mecanismos de almacenamiento en caché, ya que utiliza APC.
Mi configuración (que te recomiendo):
- nginx
- MySQL (con conversión InnoDB de la mayoría de las tablas de SMF)
- PHP-FPM (extremadamente escalable, puede usar muy pocos recursos si le dices que comience con pocos engendros)
- caché APC
Respuesta2
En primer lugar, 40.000 visitas al día y más de 400 publicaciones al día no suenan como algo que haría sudar a MySQL. 40.000 visitas al día equivalen aproximadamente a 2 visitas por segundo si se distribuyen a lo largo del día, y más de 400 publicaciones significan que hay una nueva publicación cada tres minutos.
Y eso no es mucho. En realidad.
No mencionaste qué motor de almacenamiento está en uso. Con las tablas MyISAM necesitas ajustar especialmente lasbúfer_claveycaché_tablavalores. Con tablas InnoDBinnodb_buffer_pool_sizees el más importante.
Elbúfer_clave = 16ken tu ejemplo suena extraño. ¿Un key_buffer de 16 kilobytes? De ninguna manera, que sea al menos 16 M (megabytes), o si su servidor tiene una cantidad de memoria decente, entonces puede ser mucho más. Sin embargo, tenga en cuenta que muchas variables de MySQL sonconexiónvalores específicos y no globales, por lo que si la carga de su servidor significa miles de conexiones MySQL simultáneas, entonces necesitará ajustar los valores hacia abajo, pero si normalmente solo tiene un puñado de conexiones pero grandes conjuntos de datos, entonces necesitará ajustar los valores.