Serveur Web Debian Trèèèès Lent

Salus

j’ai un serveur dédie sous debian : Intel® Pentium® 4 CPU 3.00GHz, 2 cores.

le problème c’est que la navigation sur mon site est très lente ( ~36 seconde pour que le serveur répond ).

Voici quelque infos :

Running processes 190 ( 80% vient de /usr/sbin/apache2 -k start )
Moyennes de charge CPU 1.08 (1 min) 1.05 (5 mins) 1.00 (15 mins)
Mémoire réelle 1.97 GB total, 353.72 MB utilisé
Mémoire virtuelle 2.53 GB total, 1.02 MB utilisé

j’ai un autre problème c’est que le débit de téléchargement est très faible : 240 ko/sec :exclamation:
(le débit de l’envoie : 5 Mo/sec) comment augmenter cette valeur :question: :question:

Regarde dans les log d’appache si y’aurait pas un petit malin qui essai “d’attaquer” ton “site”… :wink:

Par contre, pour ça:

[quote]j’ai un autre problème c’est que le débit de téléchargement est très faible : 240 ko/sec :exclamation:
(le débit de l’envoie : 5 Mo/sec) comment augmenter cette valeur :question: :question: [/quote]En passant au SDSL!!! :mrgreen: (très cher… :confused: )
En fait, là tu es “dehors”, donc, ce qui est du “téléchargement”, en fait, ce qui compte c’est “l’envoi” du coter serveur (“très” faible sur de l’ADSL…)

:smt006

Non, le probleme vient du nombre de visiteurs de mon site .!!

Est ce qu’il y a des modification qu’il faut faire à la configuration d’apache et de php.ini ??

merci pour votre réponce .

C’est ça être populaire… ça n’a pas que des avantages… :wink:

Pour les modif à apporter, je ne saurais te dire, je ne suis pas assez “calé” là dessus pour me permettre de te répondre…

Par contre, es-tu sûr que ça vienne de la “charge”? C’est peut-être, justement, la fréquentation qui sature ton débit… il est où le serveur? sur une ligne “privée” (chez toi?), si oui et que tu as un réseau “interne”, fais des tests de navigation à partir du réseau… si ça ne rame pas, ça ne vient pas de la charge… :wink: … par contre, en interne, utilise l’adresse ip de la machine …

:smt006

  • Je ne suis pas sure que ca vienne de la charge .
  • le serveur est chez giga-international.com/.
  • je voullais te dire que j’ai modifié quelque paramètre dans la configuration de apache et php.ini.

quelles sont les paramètres qui peuvent jouer sur la vitesse du site ??

hello
la mémoire virtuel a été utilisée donc quelque chose a du manger pas mal de memoire sur ton systeme. sinon pour apache j’y connais pas grand chose et a mon avis sa étonnerai que apache soie en cause.
par contre il ya un truc qui est a mon avis une piste:
190 task !

chez moi j’en ai 35 avec une machine virtuel donc la tu as visiblement des truc qui tourne et qui mange.
sa ne mange pas forcement du cpu mai peut être des i/o (entrée sortie) du coup sa ram.

vérifie ce qui transit avec iptraft :slightly_smiling:

Vérifie ta configuration KeepAlive d’Apache, c’est un oubli classique.

En fonction de ta config KeepAlive, une bête connexion à une page peut rester ouverte une 30aine de secondes voire plus. Résultat, vu que les connexions ne se libèrent pas assez rapidement Apache est obligé de forker inutilement (je suppose que tu es en mpm_prefork + mod_php ?) jusqu’à atteindre sa limite MaxClients (ce qui semble être le cas chez toi, une config standard d’Apache prévoit 150 clients donc 150 process, à 2 près ça correspond à tes 80% :stuck_out_tongue:). À partir de là, ne pouvant plus créer de nouveau process, Apache est obligé d’attendre que les anciennes connexions expirent (le KeepAlive par défaut est de 30 secondes je crois, ça correspond encore une fois plus ou moins) avant de pouvoir répondre aux nouvelles requêtes. Le pire, c’est que la plupart des navigateurs ouvrent 2-3 connexions supplémentaires (en plus de celle de la page elle-même) ce qui porte le nombre de process Apache bloqués à 3-4 par page vue !

Bref, descends le KeepAliveTimeout à quelques secondes (5 c’est bien plus que suffisant, moi j’utilise 3) il y a de fortes chances que ça aille mieux après.

Par contre pour l’utilisation de la mémoire… mis à part que 150 process Apache+mod_php ça fait jamais du bien à un serveur, je vois pas trop.

Edit: après vérification, le KeepAliveTimeout par défaut est de 15 secondes et non pas 30. Mais ça vaut quand même le coup de jeter un œil là dessus.

Tu peux aussi ajouter une gestion de cache avec apc par exemple qui te permettra de gagner un peu

Voici ma configuration de Apache:
J’avais déja KeepAliveTimeout = 5

[code]#

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 “/var/log/apache2/foo.log”

with ServerRoot set to “” will be interpreted by the

server as “//var/log/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.1/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.

#<IfModule !mpm_winnt.c>
#<IfModule !mpm_netware.c>
LockFile /var/lock/apache2/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 5

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

MaxClients 100

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

StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0

These need to be set in /etc/apache2/envvars

Group www-data

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

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

container, error messages relating to that virtual host will be

logged here. If you do define an error logfile for a

container, that host’s errors will be logged there and not here.

ErrorLog /var/log/apache2/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 /etc/apache2/mods-enabled/.load
Include /etc/apache2/mods-enabled/
.conf

Include all the user configurations:

Include /etc/apache2/httpd.conf

Include ports listing

Include /etc/apache2/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 %b “%{Referer}i” “%{User-Agent}i”” vhost_combined
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
LogFormat “%h %l %u %t “%r” %>s %b” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent

Define an access log for VirtualHosts that don’t define their own logfile

CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

Customizable error responses come in three flavors:

1) plain text 2) local redirects 3) external redirects

Some examples:

#ErrorDocument 500 “The server made a boo boo.”
#ErrorDocument 404 /missing.html
#ErrorDocument 404 “/cgi-bin/missing_handler.pl”
#ErrorDocument 402 http://www.example.com/subscription_info.html

Putting this all together, we can internationalize error responses.

We use Alias to redirect any /error/HTTP_.html.var response to

our collection of by-error message multi-language collections. We use

includes to substitute the appropriate text.

You can modify the messages’ appearance without changing any of the

default HTTP_.html.var files by adding the line:

Alias /error/include/ “/your/include/path/”

which allows you to create your own set of files by starting with the

/usr/share/apache2/error/include/ files and copying them to /your/include/path/,

even on a per-VirtualHost basis. The default include files will display

your Apache version number and your ServerAdmin email address regardless

of the setting of ServerSignature.

The internationalized error documents require mod_alias, mod_include

and mod_negotiation. To activate them, uncomment the following 30 lines.

Alias /error/ “/usr/share/apache2/error/”

<Directory “/usr/share/apache2/error”>

AllowOverride None

Options IncludesNoExec

AddOutputFilter Includes html

AddHandler type-map var

Order allow,deny

Allow from all

LanguagePriority en cs de es fr it nl sv pt-br ro

ForceLanguagePriority Prefer Fallback

ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var

ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var

ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var

ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var

ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var

ErrorDocument 410 /error/HTTP_GONE.html.var

ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var

ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var

ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var

ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var

ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var

ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var

ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var

ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var

ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var

ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

Include of directories ignores editors’ and dpkg’s backup files,

see README.Debian for details.

Include generic snippets of statements

Include /etc/apache2/conf.d/

Include the virtual host configurations:

Include /etc/apache2/sites-enabled/
User www-data
[/code]

Merci pour vos réponces

Je vois rien de particulier dans ta config…

Peux tu confirmer le MPM que tu utilises (à priori prefork ou worker) ?
Est-ce que le site redevient plus rapide si tu redémarres Apache ? MySQL ? Le serveur au complet (reboot) ?

Salut,
Et qu’est-ce qu’il y a sur ton site ? Beaucoup d’animations java ? Beaucoup d’images ?
On peut avoir le lien ? (histoire de venir alourdir un peu plus ton serveur :mrgreen: )