Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gitlab ultra lent puis 502

Mouline fait parfois planter la connexion SSH

Sujet résolu
    12 septembre 2017 à 10:55:02

    Bonjour à tous.

    Voilà je tente sans succès depuis un moment maintenant de mettre en place un Gitlab sans le serveur bundle qui va avec, tout simplement parce-que d'une le nginx inclut me pourrit celui déjà existant, ensuite parce que niveau perf, 2 nginx qui coexistent, je pense pas que ce soit génial.

    Du coup vous l'aurez compris sans doute j'ai déjà nginx et des vhosts. Je suis sur Debian 8, et pour être sûr de moi, je fais d'abord cette manip sur un serveur virtuel en local (VirtualBox) avant de répliquer la manip sur mon vrai serveur.

    Voici les étapes que j'ai suivi pour l'installation :

    Installation

    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
    apt-get install gitlab-ce

    Config perso et désactivation du nginx bundle

    nano /etc/gitlab/gitlab.rb
    external_url 'http://www.gitlab.dev'
    nginx['enable'] = false
    web_server['external_users'] = ['www-data']

    Rechargement de la config du Gitlab

    gitlab-ctl reconfigure
    gitlab-ctl restart

    Création vhost nginx en m'inspirant de la config fournie ici https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/nginx/gitlab-omnibus-nginx.conf

    nano /etc/nginx/sites-available/gitlab
    upstream gitlab-workhorse {
      server unix:/var/opt/gitlab/gitlab-workhorse/socket;
    }
    
    # ftb redirection vers www
    server {
        listen 80;
        listen [::]:80;
        server_name gitlab.dev;
        return 301 http://www.gitlab.dev$request_uri;
    }
    
    # Normal HTTP host
    server {
      listen 80;
      listen [::]:80;
      server_name www.gitlab.dev; ## Replace this with something like gitlab.example.com
      server_tokens off; ## Don't show the nginx version number, a security best practice
      root /opt/gitlab/embedded/service/gitlab-rails/public;
      access_log /var/log/nginx/gitlab_access.log;
      error_log /var/log/nginx/gitlab_error.log;
      location / {
        client_max_body_size 0;
        gzip off;
        proxy_read_timeout 300;
        proxy_connect_timeout 300;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://gitlab-workhorse;
      }
    }
    

    Activation du vhost et rechargement de la conf d'nginx

    ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
    service nginx reload


    Evidemment, entre-temps j'ajoute mon vhost dans le fichier host de la machine hôte (windows).

    Lorsque j'accède à mon vhost dans un navigateur, même si le chargement est relativement long, ça fonctionne, et je me fais rediriger vers une url comme http://www.gitlab.dev/users/password/edit?reset_password_token=6Tu_W3jxMr8Yk_tP9LWm qui me demande de choisir un mot de passe, ce que je fais.

    Après le post du mot de passe, l'url mouline à l'infini, et je me fais parfois carrément jeter de la console SSH (Putty) qui freeze, voire me donne un timeout.

    Les log d'erreur sont vides, et voici les log d'accès (/var/log/nginx/gitlab_access.log)

    192.168.56.1 - - [12/Sep/2017:09:42:27 +0200] "GET /assets/webpack/main.b5b6898b6c23bc4f8529.bundle.js HTTP/1.1" 200 235401 "http://www.gitlab.dev/users/password/edit?reset_password_token=PVeozwk6vFe9mY7zyLbv" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:42:27 +0200] "GET /assets/print-87b4ace0db1f79d91e4fe6e74435b66b71d70fee57ffbb72d0fade17374fcc6b.css HTTP/1.1" 200 348 "http://www.gitlab.dev/users/password/edit?reset_password_token=PVeozwk6vFe9mY7zyLbv" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:42:27 +0200] "GET /assets/webpack/locale.a4527fba639e41727fdf.bundle.js HTTP/1.1" 200 20863 "http://www.gitlab.dev/users/password/edit?reset_password_token=PVeozwk6vFe9mY7zyLbv" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:42:27 +0200] "GET /assets/application-8408b61d8db312ea29daa2403abc953de27ad84839eecd58ce0b0f88b43b39bc.css HTTP/1.1" 200 117551 "http://www.gitlab.dev/users/password/edit?reset_password_token=PVeozwk6vFe9mY7zyLbv" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:42:27 +0200] "GET /assets/favicon-075eba76312e8421991a0c1f89a89ee81678bcde72319dd3e8047e2a47cd3a42.ico HTTP/1.1" 200 1384 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:53:01 +0200] "GET / HTTP/1.1" 302 101 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:53:02 +0200] "GET /users/sign_in HTTP/1.1" 302 149 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:53:39 +0200] "GET /users/password/edit?reset_password_token=6Tu_W3jxMr8Yk_tP9LWm HTTP/1.1" 200 7562 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:54:57 +0200] "POST /users/password HTTP/1.1" 200 7528 "http://www.gitlab.dev/users/password/edit?reset_password_token=6Tu_W3jxMr8Yk_tP9LWm" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
    192.168.56.1 - - [12/Sep/2017:09:58:19 +0200] "POST /users/password HTTP/1.1" 499 0 "http://www.gitlab.dev/users/password" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"

    Je ne vois pas trop ce qui pourrait déconner du coup. Dans le doute, voici ma config nginx (nginx.conf) :

    user www-data;
    worker_processes auto;
    pid /var/run/nginx.pid;
    
    events {
        worker_connections 1024;
    }
    http {
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
    
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    
        sendfile on;
        tcp_nodelay on;
    
        # renvoie moins d'information sur le serveur
        server_tokens off;
    
        # taille des buffers et taille max des requêtes normales
        client_body_buffer_size 1k;
        client_max_body_size 8m;
        large_client_header_buffers 1 1K;
        ignore_invalid_headers on;
    
        # définition des différents timeout
        client_body_timeout 5;
        client_header_timeout 5;
        keepalive_timeout 65 5;
        send_timeout 5;
        server_name_in_redirect off;
    
        # active la compression des pages sauf pour les navigateurs pourris
        gzip on;
        gzip_comp_level 6;
        gzip_proxied any;
        gzip_vary on;
        gzip_types text/plain text/css application/x-javascript application/json application/xml;
        gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    
        # limitation du nombre de connexion par client
        limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=2r/s;
        limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    
        # inclusion des autres fichiers de conf (proxy) puis des sites activés
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    }

    Si je commente les lignes qui concernent la limite de requête par client et autres limitations, Gitlab arrive au bout de sa requête et me retourne un 502 : "Whoops, GitLab is taking too much time to respond. Try refreshing the page, or going back and attempting the action again. Please contact your GitLab administrator if this problem persists".

    Est-ce que quelqu'un aurait une idée SVP? :3

    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2017 à 20:02:02

      J'ai monté un GitLab il y a quelques temps, et j'avais moi aussi un NGINX de pré-installé avec des vhosts déjà existants, et je me suis bien débrouillé.

       je t'invite à te rendre la dessus et à regarder les 2e et 3e liens plus particulièrement :

      https://wiki.imperium-airsoft.fr/doku.php?id=start:administration_service_gitlab

      • Partager sur Facebook
      • Partager sur Twitter
        13 septembre 2017 à 20:49:03

        Merci. J'avais bien suivi la même procédure que toi c'est à dire :

        - Installation : https://wiki.imperium-airsoft.fr/doku.php?id=start:administration_service_gitlab

        - Config Nginx (ainsi que la section non-bundle) : https://docs.gitlab.com/omnibus/settings/nginx.html#nginx-settings

        - Config vhost (exactement le même lien).

        Du coup j'ai suivi le 3e lien : https://www.linode.com/docs/development/version-control/how-to-unbundle-nginx-from-omnibus-gitlab-for-serving-multiple-websites/

        Je suis dubitatif sur les histoires de Ruby et l'extension web puisque c'est la seule source à parler de ça... Bizarrement, les autres, y compris la doc officielle, ne parlent pas du tout de ça. Enfin bon ça ne coûte rien d'essayer.


        J'ai eu pas mal d'erreurs en tenant juste d'ajouter le module. Après ça, je suis reparti sur un truc propre. J'ai backup ma conf et mes vhosts et j'ai viré complètement nginx, puis je l'ai réinstallé.

        Tentative 1 : en gardant la version full : (je me suis rendu compte que j'avais la version full par défaut sans préciser) :

        libnginx-mod-http-auth-pam libnginx-mod-http-geoip libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx nginx-common nginx-full


        Là, l'inclusion de Passenger ne marche pas : nginx: [emerg] unknown directive "passenger_root" in /etc/nginx/passenger.conf:1

        Donc j'ai re tout viré, et réinstallé la version extras (tentative 2) (apparemment plus complète que la full), en suivant la doc ici, plus ou moins la même que ce que tu m'avais donné en fait : https://www.phusionpassenger.com/library/install/nginx/install/oss/jessie/

        Même une fois l'include fait, cette fois mes vhost sont OK et nginx est OK.

        Maintenant si j'appelle à nouveau l'url de mon gitlab, ça mouline toujours autant. Parfois j'ai de la chance et j'évite le 502, donc j'essaie "Register" pour ouvrir un compte. Puis je remange un 502.

        Bref à priori j'ai pas avancé d'un pouce...

        Je redonne la conf que j'utilise en ce moment :

        user www-data;
        worker_processes auto;
        pid /var/run/nginx.pid;
        
        events {
            worker_connections 1024;
        }
        http {
            include /etc/nginx/mime.types;
            default_type application/octet-stream;
        
            access_log /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;
        
            sendfile on;
            tcp_nodelay on;
        
            # renvoie moins d'information sur le serveur
            server_tokens off;
        
            # taille des buffers et taille max des requêtes normales
            # client_body_buffer_size 1k;
            # client_max_body_size 8m;
            # large_client_header_buffers 1 1K;
            # ignore_invalid_headers on;
            
            # définition des différents timeout
            # client_body_timeout 5;
            # client_header_timeout 5;
            # keepalive_timeout 65 5;
            # send_timeout 5;
            # server_name_in_redirect off;
            
            # active la compression des pages sauf pour les navigateurs pourris
            gzip on;
            gzip_comp_level 6;
            gzip_proxied any;
            gzip_vary on;
            gzip_types text/plain text/css application/x-javascript application/json application/xml;
            gzip_disable "MSIE [1-6]\.(?!.*SV1)";
        
            # Phusion Passenger config (Gitlab)
            include /etc/nginx/passenger.conf;
            
            # limitation du nombre de connexion par client
            limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=2r/s;
            limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
        
            # inclusion des autres fichiers de conf (proxy) puis des sites activés
            include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
        } 

        Pourtant, je passe tous les test de configuration.

        dev@devServer:/etc/nginx$ sudo /usr/bin/passenger-config validate-install
        What would you like to validate?
        Use <space> to select.
        If the menu doesn't display correctly, press '!'
        
         ‣ ⬢  Passenger itself
           ⬡  Apache
        
        -------------------------------------------------------------------------
        
         * Checking whether this Passenger install is in PATH... ✓
         * Checking whether there are no other Passenger installations... ✓
        
        Everything looks good. :-)
        dev@devServer:/etc/nginx$ sudo /usr/sbin/passenger-memory-stats
        Version: 5.1.8
        Date   : 2017-09-14 11:17:43 +0200
        ------------- Apache processes -------------
        *** WARNING: The Apache executable cannot be found.
        Please set the APXS2 environment variable to your 'apxs2' executable's filename, or set the HTTPD environment variable to your 'httpd' or 'apache2' executable's filename.
        
        
        ---------- Nginx processes -----------
        PID    PPID   VMSize    Private  Name
        --------------------------------------
        11342  1      165.8 MB  0.5 MB   nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
        11345  11342  165.8 MB  0.8 MB   nginx: worker process
        ### Processes: 2
        ### Total private dirty RSS: 1.34 MB
        
        
        ----- Passenger processes -----
        PID    VMSize    Private  Name
        -------------------------------
        11321  423.6 MB  1.1 MB   Passenger watchdog
        11325  642.8 MB  1.8 MB   Passenger core
        11331  431.8 MB  1.2 MB   Passenger ust-router
        ### Processes: 3
        ### Total private dirty RSS: 4.16 MB
        

        Je commence sérieusement à désespérer là... :'(

        -
        Edité par SuperJohnson 14 septembre 2017 à 11:19:03

        • Partager sur Facebook
        • Partager sur Twitter
          15 septembre 2017 à 10:39:31

          Je crois que j'ai du réinstaller au moins 2 ou 3 fois avant de réussir a avoir ce que je voulais.

          Honnêtement, je te conseillerais de désinstaller complètement et proprement GitLab (supprime donc aussi tous les fichiers résiduels après la désinstallation).

          Ensuite, de stoper ton NGINX.

          Lance ensuite l'installation de GitLab.

          Ensuite désactive le NGINX de Gitlab : https://www.linode.com/docs/development/version-control/how-to-unbundle-nginx-from-omnibus-gitlab-for-serving-multiple-websites/

          (uniquement la partie "Unbundle nginx from Omnibus GitLab")

          Et ensuite le config file pour nginx : https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/nginx/gitlab-omnibus-nginx.conf

          Nginx -t pour test et si c'est good reboot nginx

          -
          Edité par Nox Inmortus 15 septembre 2017 à 10:39:57

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2017 à 17:52:34

            Rebonjour et merci.

            En fait, je bossais sur VirtualBox sur une vieille machine (i3 d'il y a 7 ans, un vieil ACER portable).

            Le lendemain de mon dernier message, pris d'un doute, j'ai foutu mon .vdi sur ma tour, beaucoup plus puissante. Devine quoi? Mon Gitlab est OK. C'est vraiment étrange mais bon... faut croire que c'est une usine à gaz qui bouffe énormément de ressources, et que j'en avais pas assez.

            Bref la procédure que tu m'avais donnée est bien la bonne, et tout roule au poil. J'ai fait mon install sur le serveur de production, tout était OK du 1er coup. J'ai même pu foutre un petit certif' TLS avec letsencrypt sur mon vhost comme pour n'importe quel vhost.

            Pour les prochains, notez quand même que si vous avez pas la version extras d'nginx faut tout réinstaller, c'est un peu lourd mais faisable. A partir de maintenant, je partirai du principe que je mettrai toujours la extras par défaut, au cas où.

            Je passe le sujet en résolu. :)

            -
            Edité par SuperJohnson 16 septembre 2017 à 17:54:59

            • Partager sur Facebook
            • Partager sur Twitter

            Gitlab ultra lent puis 502

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown