Servidor Apache muito lento

Iniciado por herberthnilsen, 03 de Fevereiro de 2011, 08:11

tópico anterior - próximo tópico

herberthnilsen

Bom dia galera,

tudo bem

o meu problema é o seguinte, tenho minha aplicação que sempre rodei em localhost antes de subir pro servidor (acredito que quase todos fazem isso) mas antes eu estava usando o Ubuntu 10.04 LTS, mas estava travando muito e deu um erro ao qual não conseguia logar com meu usuário,

aí aproveitando que eu tinha instalado ele com apenas 10Gb de uso, resolvi formatar e instalar a versão 10.10 LTS que havia baixado a um tempo atrás

até ai beleza, depois de formatado e instalado, fui tratar de instalar minhas ferramentas que utilizava antes da formatação, que são: NetBeans 6.9.1 for PHP, PHP 5.3.3, Apache 2.algumaCoisa, Módulo de PDO for Mysql e for Postgres e o Xdebug

e também tratei de instalar o Google Chrome

enfim, deixei o micro igual a versão antes da formatação

o problema é que, ao rodar minha aplicação no localhost, o apache demora muito para fazer as requisições no Banco de Dados que fica no servidor de produção


Antes da formatação, para fazer o login demorava 0.023 s segundo o Firebug, agora demoram 4 segundos, só para o login


quando vou carregar a última tela em que estou produzindo, antes era no máximo 1 segundo, hoje está demorando  de 20 à 25 segundos para terminar de carregar

isso quando não dá TimeOut e cancela a requisição


Isso acontece apenas na aplicação, porque quando faço uma query para esse mesmo banco de dados numa tabela de 9000 +- utilizando o netbeans, ele não demora nem 2 segundos para trazer todos os dados


gostaria de saber se tem algo que posso fazer para melhorar o desempenho do meu apache, já reinstalei o apache e o php e não adiantou

desde já agradeço à todos

Herberth Nilsen

Kriptolix

a questao pode ser alguma configuraçao do apache.conf, eu chutaria a quantidade de memoria maxima reservada que pode ser que esteja baixa, entre outras configuraçoes, de uma olhada nesse arquivo (nao sei ao certo onde fica no ubuntu, acho que /etc/apache), la vc pode checar.
Ubuntu Linux 10.10

herberthnilsen

Kriador

não achei nenhuma propriedade no conf do apache que fala sobre memória

segue abaixo o arquivo conf como está rodando


Citar

#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned. 
#
# The configuration directives are grouped into three basic sections:
#  1. Directives that control the operation of the Apache server process as a
#     whole (the 'global environment').
#  2. Directives that define the parameters of the 'main' or 'default' server,
#     which responds to requests that aren't handled by a virtual host.
#     These directives also provide default values for the settings
#     of all virtual hosts.
#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "foo.log"
# with ServerRoot set to "/etc/apache2" will be interpreted by the
# server as "/etc/apache2/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
#ServerRoot "/etc/apache2"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
LockFile ${APACHE_LOCK_DIR}/accept.lock

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 60

##
## Server-Pool Size Regulation (MPM specific)
##

# 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
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   100000
</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
# ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
#              graceful restart. ThreadLimit can only be changed by stopping
#              and starting Apache.
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   100000
</IfModule>

# event 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 mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   100000
</IfModule>

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

# Include all the user configurations:
Include httpd.conf

# Include ports listing
Include ports.conf

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.

# Include generic snippets of statements
Include conf.d/

# Include the virtual host configurations:
Include sites-enabled/


Kriptolix

realmente... eu nao uso apache no ubuntu, so no centos, deve haver diferenças no conf, veja se existe lgum arquivo http.conf e da uma olhada la, tambem creio que deva existir um diretorio conf.d do apache e la tambem ha configuraçoes.

desculpa estar sendo tao impreciso, mas realmente nao tenho pratica de apache no ubuntu/debian :)
Ubuntu Linux 10.10

agente100gelo

Dá uma olhada nos processos que estão rodando (comando top).
Certa vez passei por problema semelhante e era um protetor de tela que tava consumindo a CPU toda.
Advogado e analista de sistema cearense.
Twitter: @glaydson

herberthnilsen

kriador,

realmente há um httpd.conf, mas está vázio, na pasta conf.d há quatro arquivos: security, charset, other-vhosts-access-log e localized-error-pages


mas nada que diga sobre memória  ou algo do genero,

tbm verifiquei meus processos utilizando o top e vi que tem um processo que utiliza em media 34% do CPU, chama npviewer.bin

já as memorias são ocupadas mais tempo pelo netbeans e pelo firefox, mas isso desde que o mundo é mundo e eu sou programador que isso acontece, estão consumindo entre 250 à 350 os dois


Kriptolix

realmente, esses arquivos nao tem nada a ver com a questao, outra possibilidade é ser o php.ini ou mesmo o driver do potgres do php, por que se a lentidao esta so no apache quer dizer que esta na sua aplicao, se ela roda em php é capaz de ser algum componente ou configuraçao php.
Ubuntu Linux 10.10

zekkerj

Citarresolvi formatar e instalar a versão 10.10 LTS
A versão 10.10 não é LTS...

Citartbm verifiquei meus processos utilizando o top e vi que tem um processo que utiliza em media 34% do CPU, chama npviewer.bin
É o plugin flash. Essa máquina é servidora, ou desktop?

Aliás, qual foi a versão do Ubuntu que você instalou? Server, ou Desktop? Há diferenças no kernel que podem justificar essa lentidão que vc reclama.

Citarrealmente há um httpd.conf, mas está vázio, na pasta conf.d há quatro arquivos: security, charset, other-vhosts-access-log e localized-error-pages
É assim mesmo, o Apache do Ubuntu usa a configuração "explodida" em vários arquivos.

O "top" informa sobre o uso de memória, nas primeiras linhas. Observe em particular se ele chega a usar alguma coisa de Swap, que é sinal de que sua máquina está gastando mais memória do que tem.

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

herberthnilsen

A minha versão é desktop, desculpe por colocar que meu Ubuntu é LTS, me enganei, é o Maverick Meerkat

a minha máquina é mesmo desktop, e já encontrei o problema, o meu problema está na instalação do php5, pois a minha aplicação utiliza PDO para acessar mysql e às vezes postgres e a lentidão fica somente quando é utilizado o acesso ao PDO.


Já reinstalei pelo terminal utilizando apt-get, mas deu erro na hora de instalar o PDO e o PDO_MYSQL utilizando o comando pecl

estou tentando agora instalar o APACHE 2 + PHP5 pelo Synaptic

antes de eu formatar eu havia instalado sem problemas o PDO, o que é mais engraçado, é que mesmo com o PDO instalado errado, ou não instalado (como ele acusa no terminal) o meu sistema ainda funciona, e por estar tudo errado na instalação, ele tá lerdo


enfim, vou tentar reinstalar tudo pelo synaptic, como disse antes,

se alguém tiver algum jeito de instalar o PDO no php5 funfando perfeito, eu agradeço muitoo


Abs. e obrigado pela atenção

Kriptolix

enta minha suspeita estava correta, componente php... bom, provavlemente voce instalou um a versao anterior do PDO na outra instalaçao, eu tenho problemas com o PHP sempre, alguns aplicativos so rodam bem em versoes bem especificas, pode ser que um PHP+PDO 5.2.18 (ultima versao que conheço do 5.2.x) resolva sua questao pois, do PHP 5.2 pro 5.3 houve algumas mudanças que simplesmente crasham certos aplicativos.
Ubuntu Linux 10.10

herberthnilsen

Então, é isso mesmo, erro de versão, mas como eu faço para instalar o novo pdo na mão, porque quando uso apt-get ou synaptic ele está buscado o pdo_mysql 5.1.49, e como dito antes, ele está causando o meu localhost


desde já agradeço