Problème sysctl

Fermé
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 - Modifié par jonigood le 29/11/2010 à 20:52
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 - 2 déc. 2010 à 03:13
Bonsoir a touts les CCMien

Je suis devant un souci avec sysctl et j'ai besoin d'aide, je ne trouve pas de solution tout seul.

Merci d'avance a toutes les personnes qui participes.

En effet je ne peut pas modifier la valeur de max_user_instances qui est aujourd'hui a 128 sur un serveur en production (2 virtualhoste créer sous virtualmin pour 2 site-web e-commerce) avec pas mal de visites, mon apache2 plante souvent et je ne peut entrer aucune commande sous ssh, je reçois a tout bout de champ le message :
fork: Cannot allocate memory

ou
FATAL -> Failed to fork

ou encore
Too many open files in system

j'essaye donc de modifier max_user_instance avec :
echo 512 > /proc/sys/fs/inotify/max_user_instances

qui me retourne:
echo: write error: Operation not permitted

pareil en essayant avec un éditeur de texte, permission denied quand je veux enregistrer les modifications.

édition du fichier /etc/sysctl.conf :
sudo nano /etc/sysctl.conf 

la valeur de max_user_instances est a 128, je la modifie a 512 et j'enregistre.

je lance sysctl -p pour prendre en compte les modifications et je reçois :
error: "Operation not permitted" setting key "fs.inotify.max_user_instances"

je lance sudo sysctl -p /etc/sysctl.conf :
512

J'essaye désespérément un reboot (qui devrait logiquement modifier /proc/sys/fs/inotify/max_user_instances puisque dans /etc/sysctl.conf la valeur max_user_instances est a 512 )
toujours pareil la valeur reste a 128.
encore plus suspect , la commande free me retourne :
            total       used       free     shared    buffers     cached 
Mem:       1048576     581652     466924          0          0          0 
-/+ buffers/cache:     581652     466924 
Swap:   8589934588          0 8589934588

0 de swpa , qu'est ce qui mange mon swap ?

la commande top me montre en effet beaucoup de processus apache2

sudo sysctl -p /etc/sysctl.conf me retourne aussi :
error: "Operation not permitted" setting key "fs.inotify.max_user_instances" 

voici mon sysctl.conf
# 
# /etc/sysctl.conf - Configuration file for setting system variables 
# See /etc/sysctl.d/ for additonal system variables 
# See sysctl.conf (5) for information. 
# 

#kernel.domainname = example.com 

# Uncomment the following to stop low-level messages on console 
#kernel.printk = 4 4 1 7 

##############################################################3 
# Functions previously found in netbase 
# 

# Uncomment the next two lines to enable Spoof protection (reverse-path filter) 
# Turn on Source Address Verification in all interfaces to 
# prevent some spoofing attacks 
#net.ipv4.conf.default.rp_filter=1 
#net.ipv4.conf.all.rp_filter=1 

# Uncomment the next line to enable TCP/IP SYN cookies 
# This disables TCP Window Scaling (https://lkml.org/lkml/2008/2/5/167 
# and is not recommended. 
#net.ipv4.tcp_syncookies=1 

# Uncomment the next line to enable packet forwarding for IPv4 
#net.ipv4.ip_forward=1 

# Uncomment the next line to enable packet forwarding for IPv6 
#net.ipv6.conf.all.forwarding=1 


################################################################### 
# Additional settings - these settings can improve the network 
# security of the host and prevent against some network attacks 
# including spoofing attacks and man in the middle attacks through 
# redirection. Some network environments, however, require that these 
# settings are disabled so review and enable them as needed. 
# 
# Ignore ICMP broadcasts 
#net.ipv4.icmp_echo_ignore_broadcasts = 1 
# 
# Ignore bogus ICMP errors 
#net.ipv4.icmp_ignore_bogus_error_responses = 1 
# 
# Do not accept ICMP redirects (prevent MITM attacks) 
#net.ipv4.conf.all.accept_redirects = 0 
#net.ipv6.conf.all.accept_redirects = 0 
# _or_ 
# Accept ICMP redirects only for gateways listed in our default 
# gateway list (enabled by default) 
# net.ipv4.conf.all.secure_redirects = 1 
# 
# Do not send ICMP redirects (we are not a router) 
#net.ipv4.conf.all.send_redirects = 0 
# 
# Do not accept IP source route packets (we are not a router) 
#net.ipv4.conf.all.accept_source_route = 0 
#net.ipv6.conf.all.accept_source_route = 0 
# 
# Log Martian Packets 
#net.ipv4.conf.all.log_martians = 1 
# 
# The contents of /proc/<pid>/maps and smaps files are only visible to 
# readers that are allowed to ptrace() the process 
# kernel.maps_protect = 1 
fs.inotify.max_user_instances = 512

Dans l'attene de votre aide.

Merci a tous


8 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
30 nov. 2010 à 11:15
Salut,

Permière question, pourquoi tu t'interesse a inotify ? (D'où te viens cette démarche ?)
Je ne dis pas que c'est une fausse psite, mais pour moi, (qui ne connaissait que dnotify) inotify sert en quelques sorte a ce que le noyau previenne tout processus l'ayant demandé d'un changement sur le disque.

Ensuite, concernant ton swap:
            total       used       free     shared    buffers     cached 
Mem:       1048576     581652     466924          0          0          0 
-/+ buffers/cache:     581652     466924 
Swap:   8589934588          0 8589934588


Il n'y a pas de problème, le zero étant dans la colonne used, c'est plutôt bon signe, tu n'utilise pas la swap :)

Enfin, concernant tes erreurs, "Fail to fork", "Too many open files", etc. tu pourrait effectivement tunner /proc, mais à moins de faire des operation trés particulière, les limites par défaut ne devraient pas être modifée... ce me semble plus être un problème dans tes scripts (php ou autre), qui ne libèreraient pas les ressources comme il convient du coup, les thread apache ne ferment pas, etc.)

As-tu regarder tes error log, apache ? En général, a partir de là, tu peux trouver un éventuel script qui ferait planter le process apache
As-tu beaucoup de process en <defunct> qui traine pour l'utilisateur apache ?
0
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 28
Modifié par jonigood le 30/11/2010 à 17:08
Bonjour a tous.

Merci de ta réponse asevere.

Première question, pourquoi tu t'intéresse a inotify ? (D'où te viens cette démarche ?)

Avant de posté j'ai cherché sur google, et j'ai trouvé pas mal de forum qui parle de cette limite a 128 (apparemment,c'est uniquement sur les nouvelles versions) qui cause problème avec apache, exemple :

ici
https://forum.ovh.net/
ou encore la
http://www.artiflo.net/...

il mentionne :
/proc/sys/fs/epoll/max_user_instances

sur ma debian je n'est pas de dossier epoll, par contre j'ai inotify et a l'intérieur le fameux max_user_instances , donc je suis arriver a cette conclusion comme ceci ...
peut être que effectivement le souci viens d'autre part, je suis incapable de trouver la source.

De plus quand je reçois une erreur fork ou autre je lance top au même moment et je constate que même pas la moitié de ma Ram est utilisée, même pas 10% de mes processeurs.

Enfin, concernant tes erreurs, "Fail to fork", "Too many open files", etc. tu pourrait effectivement tunner /proc

tunner /proc ? tu pourrait m'en dire plus ?

ce me semble plus être un problème dans tes scripts (php ou autre)

J'ai pensé a sa, dans un premier temps l'installation de php5 a comme valeur par défaut :
memory_limit = 128M

Tout de même pour être certain j'ai ajouté un .htaccess sur chaque site avec cette limite et j'ai limité l'exécution de script a 10 seconde maximum dans mon php.ini.

En sachant que sur cette machine il n'y a que apache2,php5 de lancer au démarrage pour gagner des ressources je suis presque certain de pas manquer de ressources, je pense a une limitation quelque part , laquelle ?

As-tu regaré tes error log, apache ?

oui et je retrouve encore cette erreur fork :

Tue Nov 30 14:55:24 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Tue Nov 30 14:55:34 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Tue Nov 30 14:55:44 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Tue Nov 30 14:55:54 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Tue Nov 30 14:56:04 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process

Je voie pas d'autre erreur dans les logs apache si ce n'est que quelques pages non trouvé ....

concernant mon swap

Effectivement je me suis trompé de colone mon swap n'est pas dutout utiliser .... la fatigue !!!!!!!

Je n'est toujours pas trouvé de moyen pour modifier la limite max_user_instances je me retrouve toujours devant un beau
Operation not permitted

Une idée ?

Merci
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
30 nov. 2010 à 18:22
Bingo je viens de perdre ma connection :(

Je disais donc...

Si la modif du max_user_instance n'est pas prise en compte dans la conf de sysctl, c'est que tu es limité a un niveau plus bas...

Chez quel hébérgeur es-tu (avec quelle formule) ?
Ton serveur est-il physique ou virtuel ?
Quel est l'os, la version du kernel (uname -a) ?
As-tu souvenir d'une mise à jour avant que le problème n'arrive ? (mise à jour du serveur, ou du code de tes applications)
Combien as-tu d'utilisateurs connectés simultanément ?

Ce que tu peux tenter de tester, modifier temporairement ta conf apache concernant le KeepAlive (désactive le pour voir si c'est mieux), augmenter le nombre de threads apache, etc.

++
0
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 28
Modifié par jonigood le 30/11/2010 à 20:10
:-( pour ta conex !

je répond :
Chez quel hébérgeur es-tu (avec quelle formule) ? :

Nubio.net avec un VCORE 4
1Giga Ram
4 Coeur
10 Mbps de bande passante

Ton serveur est-il physique ou virtuel ? :

VPS

Quel est l'os, la version du kernel (uname -a) ?
c'est une débian, kernel :

2.6.18-194.17.1.el5.028stab070.7 #1 SMP
x86_64 GNU/Linux

As-tu souvenir d'une mise à jour avant que le problème n'arrive ? (mise à jour du serveur, ou du code de tes applications) :

C'est une installation qui date de 2 semaines, j'ai eu ce problème au départ , j'ai tardé avant de posté car j'ai vraiment chercher et testé dans tout les sens .....
0
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 28
30 nov. 2010 à 20:44
re

J'oublie de préciser que sa commence a planter a partir de 10/15 visiteurs simultanés ! pas grand chose

Je précise aussi que les sites on beaucoup d'images, chaque page ouverte fait appel a un article donc a plusieurs images....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 28
30 nov. 2010 à 20:55
Nouveaux messages dans error.log de apache2

[Tue Nov 30 19:44:58 2010] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Tue Nov 30 19:44:58 2010] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Tue Nov 30 19:44:58 2010] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Tue Nov 30 19:44:58 2010] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Tue Nov 30 19:44:58 2010] [emerg] (22)Invalid argument: couldn't grab the

:-(
0
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 28
1 déc. 2010 à 16:44
petit Up cordial
0
grab the accept mutex vient de php qui n'a pas assez de mémoire (son script).
Il faut simplement augmenter les ressources du php ini & httpd.conf
0
jonigood Messages postés 476 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 6 juillet 2011 28
2 déc. 2010 à 03:13
merci

J'ai appliquer une config plus fine sur apache et php, je laisse tourner et reviens au nouvel
0