2009-06-12 5 views
0

J'apprécierais si quelqu'un peut fournir des commentaires ou me diriger dans la bonne direction. Je suis incapable d'exécuter des commandes de terminal sur un serveur distant lorsque trois sites Django fonctionnent en mode démon. Je n'ai pas de problème quand j'utilise le mode embarqué sur un ou deux sites. Quand j'entre les commandes, je reçois seulement "-bash: fork: impossible d'allouer de la mémoire".Mode Django, mod-wsgi et daemon; problème "bash: fork: ne peut pas allouer de la mémoire"

Le système: Ubuntu LTS 08h04 à distance sur le nuage virtuel, aucun fichier SWAP, mais 512 Mo de RAM (gratuit, haut et pc aux indiquant seulement 20% mémoire utilisée), l'accès avec Putty, FTP avec WinSCP, pare-feu mis en place UFW, Apache 2.2.8, pré-fourchue, mod-wsgi 2.3, sqlite db,

fichier .conf, à partir de maintenant avec daemons commentées;

NameVirtualHost *: 80

Helme comme suit

<VirtualHost *> 
    ServerAdmin [email protected] 
    ServerName helme.h1.net 
    DocumentRoot /home/helme/django/facts/apache/ 
    DirectoryIndex index.html index.htm 

    ServerAlias helme.h1.net www.helme.h1.net 

    <Directory /home/helme/django/facts/apache/> 
     Options Indexes FollowSymLinks 
     AllowOverride AuthConfig 
     Order allow,deny 
     Allow from all 

    </Directory> 

    ErrorLog /home/helme/django/facts/log/error.log 
    LogLevel info 
    CustomLog /home/helme/django/facts/log/access.log common 

    #WSGIDaemonProcess helme.h1.net user=www-data group=www-data processes=5 threads=1 
    #WSGIProcessGroup helme.h1.net 


    WSGIScriptAlias//home/helme/django/facts/apache/django.wsgi 

    <Directory /home/helme/django/facts/apache/> 
     Order allow,deny 
     Allow from all 
    </Directory> 


</VirtualHost> 

Charly comme suit

<VirtualHost *> 
    ServerAdmin [email protected] 
    ServerName facts-pte.h1.net 
    DocumentRoot /home/pte/django/facts/apache/ 
    DirectoryIndex index.html index.htm 

    ServerAlias facts-pte.h1.net www.facts-pte.h1.net 

    <Directory /home/pte/django/facts/apache/> 
     Options Indexes FollowSymLinks 
     AllowOverride AuthConfig 
     Order allow,deny 
     Allow from all 

    </Directory> 

    ErrorLog /home/pte/django/facts/log/error.log 
    LogLevel info 
    CustomLog /home/pte/django/facts/log/access.log common 

    #WSGIDaemonProcess facts-pte.h1.net user=www-data group=www-data processes=5 threads=1 
    #WSGIProcessGroup facts-pte.h1.net 


    WSGIScriptAlias//home/pte/django/facts/apache/django.wsgi 

    <Directory /home/pte/django/facts/apache/apache/> 
     Order allow,deny 
     Allow from all 
    </Directory> 

</VirtualHost> 

Wuest comme suit

<VirtualHost *> 
    ServerAdmin [email protected] 
    ServerName wuest.h1.net 
    DocumentRoot /home/wuest/django/wuest/apache/ 
    DirectoryIndex index.html index.htm 

    ServerAlias wuest.h1.net www.wuest.h1.net 

    <Directory /home/wuest/django/wuest/apache/> 
     Options Indexes FollowSymLinks 
     AllowOverride AuthConfig 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog /home/wuest/django/wuest/log/error.log 
    LogLevel info 
    CustomLog /home/wuest/django/wuest/log/access.log common 

    WSGIDaemonProcess wuest.h1.net user=www-data group=www-data processes=5 threads=1 
    WSGIProcessGroup wuest.h1.net 


    WSGIScriptAlias//home/wuest/django/wuest/apache/django.wsgi 

    <Directory /home/wuest/django/wuest/apache/> 
     Order allow,deny 
     Allow from all 
    </Directory> 


</VirtualHost> 

Quelle mémoire est pleine? Si Apaceh était chargé en tant que 'worker' mpm aurais-je le même problème? Est-ce aussi simple que d'ajouter un fichier SWAP? Aurai-je plus de problèmes de mémoire lorsque j'installe postgresql?

Veuillez noter que je ne suis pas un programmeur avancé ou un administrateur qui gère simplement le serveur distant pour un ami qui travaille sur les projets Django.

Toute aide serait appréciée. Sincères salutations Michael

Répondre

1

Eh bien, l'exécution d'un serveur sans un espace d'échange (swap est généralement pas un fichier, mais une partition de disque dur sous Linux) est une recette pour un désastre. Ajouter un serait presque certainement résoudre votre problème.

Fondamentalement, il n'est pas rare que tout ce que vous avez en cours d'exécution sur votre serveur alloue toute la RAM disponible. Pour que votre serveur fonctionne aussi vite que possible, il est souhaitable de disposer de toutes les informations dont votre serveur a besoin pour effectuer son travail en RAM. Pour expliquer le concept de mémoire virtuelle, un serveur avec seulement 512 Mo de mémoire vive pourrait facilement utiliser sa RAM, mais le noyau du système d'exploitation devra avoir une sorte de réserve, donc il y aura toujours de la mémoire disponible pour l'allocation , si par exemple (dans votre cas) un nouvel utilisateur a besoin de démarrer un shell comme bash. Par conséquent, si le serveur dispose d'un échange, vous pouvez allouer de la mémoire, même si toute la mémoire physique est déjà utilisée. Habituellement, cela amènera le noyau à déplacer certaines des informations rarement accédées depuis la mémoire RAM pour les échanger, ce qui donnera à votre nouveau processus un peu de mémoire physique réelle.

Mais si le noyau n'a pas de mémoire virtuelle disponible (la RAM est pleine et l'échange est plein ou manquant), il n'a pas d'autre choix que de refuser la demande d'allocation de mémoire. Ce qui provoquera des situations comme celle-ci où vous ne pouvez pas vous connecter.Pour éviter cela, le conseil actuel est de créer un espace de permutation deux fois plus grand que votre mémoire physique (1 Go dans ce cas), bien que cela ne devrait probablement pas dépasser 4 Go dans la plupart des cas.

Questions connexes