Servidor lento luego de 200 usuarios online, mala configuracion?.

  • Autor Autor slossetti
  • Fecha de inicio Fecha de inicio
S

slossetti

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas, queria consultarles sobre un problema que estoy teniendo en mi dedicado con el foro. El tema es que tengo un vbulletin 4 con Temas 49.695 - Mensajes 1.128.792 - Miembros 3.866 -Miembros Activos 1.994

El tema es que cuando los usuarios online sube a mas de 200 se comienza a poner todo lento, no solo el foro sino que tambien afecta a la web. A medida que se incrementa el numero de visitantes online se pone mas y mas lento al punto de ya no poder ingresar al mismo.

El servidor dedicado que tengo tiene las siguientes especificaciones:

AMD Athlon 64 X2 3400+
4GB Memoria
320GB SATA 3.0 7200RPM x 2 RAID 1
CentOS 5 64Bits

Posiblemente necesiten algun otro tipo de dato, haganmelo saber que se los paso, porque me tiene preocupado el asunto.

Gracias.
 
Buenas slossetti,

Aquí entramos en el maravilloso mundo de la optimización de sistemas, vayamos por partes

Tienes que tener instalado PHP5 con suPHP (en algunos casos FastCGI buena opción) y con un cacheador de contenido (xCache APC...) al igual que tener bien configurado y desactivado los módulos de apache innecesarios que vBulletin no utilice, y no activar a mansalva todas las configuraciones de AdminCP de vBulletin si no adaptándolas al mismo. El servidor puede ser bastante bueno por que lo es pero también importa mucho la configuracion y en ese aspecto importa principalmente de tí. Ya puedas tener plesk, CPanel o la configuracion manual ¡que sin optimización no hay milagros!

Un saludo.
 
Hola, gracias por la respuesta, me dieron en el servidor plesk. Actualmente con php5, el xcache lo estaba configurando dado que algo hice mal que para ingresar al panel de vbulletin me ingresaba para validar al admin del xcache.

Calculo que debo tener mal configurado ciertas cosas del servidor para el uso de vbulletin, pasa que con optimizacion no soy muy habido aun.

Saludos y gracias.
 
Buenas slossetti,

¡Nadie nace sabiendo! ^^ a si que no te preocupes es normal que no sepas mucho todavía la cuestión es ir aprendiendo pausadamente pero que se haga, mi consejo es que mires el php.ini como está y vayas mirando guías como opimizarlo ¡bien! también el MySQL el my.cnf es una pieza muy importante en todos estos aspectos ¿Por qué? por el nivel de consultas...etc.


¡Y sobre todo recuerda mirar el httpd.conf que se localiza en /etc/httpd/conf/httpd.conf!

Editado: Me he propuesto a hacer una guía algo tocha pero bueno ^^ aquí la tienes -> http://www.vbhispano.com/foros/f35/...acion_lampf_linux_apache_mysql_php_ftp-26430/

Un saludo.
 
Por que no haces un top y lo pegas aqui asi como tu configuracion del cnf, a groso modo es muy dificil decirte nada asi, por otro lado no estoy de acuerdo con xcache y menos con plesk, deberias pasarte a cpanel y despues

apache+nginx+ACP te daria un resultado excepcional comparado con solo xcache y apache.

Y en cuanto a opcodes ten cuidado, zend por ejemplo no es compatible con eaccelerator, xcache es un proyecto atascado y tiene gran cantidad de incompatibilidades con versiones modernas de php.

Saludos
 
Buenas robert66,

Evidentemente que Plesk da más problemas pero nunca viene mal hacerlo a mano, lo que viene siendo por SSH, si es para ti solo el servidor, vamos que es un servidor dedicado veo una tontería poner un panel de control como CPanel o Plesk, aunque sí antes que Plesk evidentemente Cpanel.

Nginx tiene sus partes buenas y malas, si la velocidad de carga FastCGI+Nginx es MUY buena pero hay ciertos módulos de apache bastante dependientes en cuanto a operaciónes. Aparte que se tiene poca información para el usuario medio en cuanto a su configuración pero ahora que lo comentas posiblemente cree una guía para nginx.

Además para utilizar CPanel con nginx se requiere un plugin adicional -> http://cpnginx.com/

En mi experiencia, yo siempre he utilizado Apache y Tomcat para páginas en JSP, pero he utilizado nginx para webs de índole PHP/Perl/Python.

Muchos y galardonados LSA's han hecho mútiples pruebas con XCache y APC y en cacheado de código interpretado ha dado la mejor talla xCache y con PHP 5.3, aunque como todo, para gustos colores al igual que en este aspecto.

Un saludo.
 
Plenamente de acuerdo contigo, lo mejor es a manita y sobre todo por que te ahorras licencias de las que puedes prescindir y no estan los tiempos para tirar nada y si me apuras y quieres comodidad webmin es gratis y para un principiante muy comodo.

Yo, en particular con una web de aprox 25000 visitas/ dia probe con xcache para estatico y mencached para sql, etc ,nginx lo probe tambien como proxi en vez de como servidor web y un sin fin de combinaciones y algunas no iban mal pero ahora si quito la publicidad la carga de la web en tiempo y estamos hablando de + de 650000 usuarios anda en torno al segundo, segundo y medio y una carga del servet entre 0,40 y 0,70, hablamos de un centos 5 y nada de consumir swap.

Se me olvidaba, sin fastcgi, cgi corriendo solo.

Un saludo
 
Gracias a todos por las respuestas, les comento que el plesk me vino gratuito en el servidor, podria ponerle cpanel pero debo abonar mensualmente, de todas maneras el cpanel me gusta mas y si a ustedes les parece que hace algo de diferencia entonces lo voy a pensar.

con respecto a lo que me preguntaban a continucación les dejo el resultado del top, igual no es en un horario pico sino tranquilo.

Insertar CODE, HTML o PHP:
top - 03:45:00 up 29 days,  6:28,  1 user,  load average: 0.31, 0.45, 0.50
Tasks: 154 total,   1 running, 152 sleeping,   0 stopped,   1 zombie
Cpu(s): 13.1%us,  2.7%sy,  0.0%ni, 83.6%id,  0.2%wa,  0.2%hi,  0.3%si,  0.0%st
Mem:   3788908k total,  3163772k used,   625136k free,   149348k buffers
Swap:  2104496k total,   538828k used,  1565668k free,  1886096k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3223 apache    16   0  395m  24m 4976 S 25.0  0.6   0:01.54 httpd
 2448 mysql     10  -5 1262m 429m 4756 S  5.0 11.6   1686:05 mysqld
 3294 root      15   0 12764 1180  828 R  5.0  0.0   0:00.35 top
 3297 apache    15   0  393m  19m 4804 S  5.0  0.5   0:00.53 httpd
    1 root      15   0 10324  572  540 S  0.0  0.0   0:04.68 init


Lo que contiene el archivo my.cnf

Insertar CODE, HTML o PHP:
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
#skip-name-resolve
safe-show-database
#old_passwords
back_log = 50
#skip-innodb
max_connections = 500
key_buffer_size = 256M
myisam_sort_buffer_size = 256M
myisam_max_sort_file_size = 2048M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
table_cache = 4000
thread_cache_size = 128
wait_timeout = 30
interactive_timeout = 60
connect_timeout = 10
tmp_table_size = 64M
max_heap_table_size = 64M
max_allowed_packet = 128M
max_seeks_for_key = 1000
group_concat_max_len = 1024
net_buffer_length = 16384
max_connect_errors = 100000
concurrent_insert = 2
table_lock_wait_timeout = 30
read_rnd_buffer_size = 786432
bulk_insert_buffer_size = 8M
query_cache_limit = 2M
query_cache_size = 128M
query_cache_type = 1
query_prealloc_size = 262144
query_alloc_block_size = 65536
range_alloc_block_size = 4096
transaction_alloc_block_size = 8192
transaction_prealloc_size = 4096
default-storage-engine = MyISAM
max_write_lock_count = 8

[mysqld_safe]
nice = -5
open-files-limit = 8192

[mysqldump]
quick
max_allowed_packet = 128M

[myisamchk]
key_buffer_size = 384M
sort_buffer_size = 16M
read_buffer_size = 16M
write_buffer_size = 16M

[mysqlhotcopy]
interactive-timeout

Posiblemente para los mas experimentados vean algo a simple vista y pueda orientarme. Con respecto a sistema de cache entonces el xcache no seria conveniente?.

saludos.
 
El cpanel es muy comodo pero no necesario, facilita mucho algunos temas pero todo lo que hace se puede hacer a mano.

Parece que tu problema esta mas en apache que en mysql, no obstante haz una copia de tu cnf, no php.ini, cnf y sustituye su contenido por este


Insertar CODE, HTML o PHP:
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
bind-address=127.0.0.1
max_connections=600
key_buffer_size = 2000M
myisam_sort_buffer_size = 512M
myisam_max_sort_file_size = 2048M
tmp_table_size = 128M
max_heap_table_size = 128M
max_allowed_packet = 128M
query_cache_size=8M
sort_buffer_size=2M
read_rnd_buffer_size=256K
join_buffer_size=128.0K
max_heap_table_size=128M
thread_cache_size=4
table_cache=400
innodb_buffer_pool_size=1G
log-slow-queries=/var/log/mysql-slow-queries.log
long_query_time = 5
log-queries-not-using-indexes




[mysqld_safe]
nice = -5
open-files-limit = 8192

tambien seria interesante que instalaras este pequeño script que a groso modo puede ayudar bastante

http://islaserver.com/articulos/sistemas/optimizar-mysql-en-servidores-linux-mysqltuner.html

a
hora ya si, en php.ini que configuracion tienes, keep alive activado,etc,etc.
 
El cpanel es muy comodo pero no necesario, facilita mucho algunos temas pero todo lo que hace se puede hacer a mano.

Parece que tu problema esta mas en apache que en mysql, no obstante haz una copia de tu cnf, no php.ini, cnf y sustituye su contenido por este


Insertar CODE, HTML o PHP:
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
bind-address=127.0.0.1
max_connections=600
key_buffer_size = 2000M
myisam_sort_buffer_size = 512M
myisam_max_sort_file_size = 2048M
tmp_table_size = 128M
max_heap_table_size = 128M
max_allowed_packet = 128M
query_cache_size=8M
sort_buffer_size=2M
read_rnd_buffer_size=256K
join_buffer_size=128.0K
max_heap_table_size=128M
thread_cache_size=4
table_cache=400
innodb_buffer_pool_size=1G
log-slow-queries=/var/log/mysql-slow-queries.log
long_query_time = 5
log-queries-not-using-indexes




[mysqld_safe]
nice = -5
open-files-limit = 8192

tambien seria interesante que instalaras este pequeño script que a groso modo puede ayudar bastante

http://islaserver.com/articulos/sistemas/optimizar-mysql-en-servidores-linux-mysqltuner.html

a
hora ya si, en php.ini que configuracion tienes, keep alive activado,etc,etc.

Ya realice el cambio que sugeriste, asi que lo voy a estar testeando cuando tenga mucha gente online, con respecto al php.ini necesitas que revise puntualmente algo o con copiar el contenido del mismo aqui sirve?..

Gracias.
 
Es que no se que tienes cargado, haz una cosa, mira la version y el como esta apache con

httpd -v

y los modulos que tienes compilados con

httpd -l

ademas mira el keepalive a ver si lo tienes en on/off

saludos
 
httpd -v
Server version: Apache/2.2.3
Server built: May 4 2011 06:51:15

httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

httpd.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
 
ok, intenta cambiarlo a

Insertar CODE, HTML o PHP:
KeepAlive Off

StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000

el keepalive yo lo prefiero en on pero ahi muchisimos sysadmin que les va mejor off, ahora reinicia apache y dinos por favor como te va.

saludos
 
Yo tengo asi el httpd.conf

Insertar CODE, HTML o PHP:
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers      10
MinSpareServers   10
MaxSpareServers   15
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  1000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

Cual deberia cambiar?
 
Este


Insertar CODE, HTML o PHP:
<IfModule prefork.c>
StartServers      10
MinSpareServers   10
MaxSpareServers   15
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  1000
</IfModule>

saludos
 
Bueno ahi lo cambie, hoy cuando a la noche se llene bastante de gente el foro voy a poder probar de manera correcta. Gracias por la ayuda y les cuento como fue.
 
Algo raro pasa, miren como me da el uso:

Promedio de Carga del Servidor 60,54 67,68 55,42 | 130 Usuarios en Línea (114 miembros y 16 visitantes)
 
Atrás
Arriba