2016-03-31 29 views
1

Google Compute Engine'de barındırılan ve Mongo DB'de kullandığımız veritabanı olan Node'de yazılmış RESTful web API'lerini kullanan bir iOS uygulaması oluşturduk. Ayrıca, Ndex'i istekleri Node js hizmetine yönlendiren web sunucusu olarak yapılandırdık.PM2, ek süreçler çalıştırıyor

Artık Google Compute Engine Düğümünde js, otomatik ölçeklendirme özelliği AÇIK olarak yük dengeleyicinin arkasında çalışıyor. Web hizmetleri, iOS uygulama kullanıcıları tarafından ve Google Compute Engine'de başka bir örnekte bulunan arka plan işlerinde kullanılır.

Node js hizmetimizi, Google Compute Engine'de 8 çekirdekli makinemiz olduğu için 8 olarak ayarlanan çekirdek sayısı ile PM2'yi kullanmaya başladık.

Sorun şu ki, PM2'yi başlattığımda 8 işlemden geçiyor ancak zaman içinde 8 işlemden daha fazlasını gösteriyor ve bazen 'sudo pm2 kill' komutunu kullanarak PM2'yi öldürmeye çalıştığımda bu tüm 8'i öldürüyor. Node js hizmetinin başlangıcında başlatılan ancak yine de 'sudo lsof -i -P | grep -i 'dinle' Bazı süreçlerin hala çalışıyor olduğunu ve Node js hizmetinin çalıştığı bağlantı noktasını işgal ettiğini görüyorum. Yani, Node js hizmetlerini yeniden başlatmadan önce, bu ekstra PM2 işlemlerini öldürmem gerekiyor ve sonra tekrar PM2'yi yeniden başlatabilirim.

Aşağıda

upstream node { 
    server 127.0.0.1:5001; 
} 

server { 
    listen 80; 
    server_name api.dev.yellfy.com; 
    location/{ 
     #proxy_pass http://127.0.0.1:5001; 
     proxy_pass http://node; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
     client_max_body_size 300M; 
     proxy_read_timeout 600s; 
     proxy_connect_timeout 600s; 
    } 
} 

beni ekstra işlemler çalışan PM2 sebebi ne olabilir olarak anlamamıza yardım edin benim Nginx yapılandırma olduğunu. Aşağıdaki Referans için

I

platformunun

kullanıyorum teknoloji yığın

Düğüm js - 5.5.0
PM2 - 1.0.0
Mongo DB - 3.0.4
Nginx - 1.6 .3
CentOS Linux sürümü 7.2.1511 (Çekirdek)

+1

Ben pM2 ile benzer bir sorun karşılaştı, onun pid ** ps -aux bularak PM2 süreci öldürme deneyin | grep PM2 ** tüm süreçleri – AJS

+1

'pm2 kill' seçeneğiyle aşina olmamalı ([docs]' da (https://github.com/Unitech/pm2) belirtilmemiş) ama Belki de “kill”, UNIX'in “kill -9” komutunun eşdeğeridir, bu da sürecin kendisini ve belki de kendi spawlerini değil, öldürür. Eğer 'pm2 stop all' komutunu kullanırsanız aynı davranışı gözlemliyor musunuz? (ya da 'yeniden başlat', 'sil' seçeneğini seçerek ne elde ederseniz edin)? Şahsen, ben 'pm'' korumak için başka bir şey' sudo eklemek için bir neden bulamadım henüz (benim için sadece küresel yükleme) –

+1

pm2 güncelleme deneyebilirsiniz? Bu, yeni bir düzeltilmiş hata gibi hissediyor (elimle konuya giremiyorum). – soyuka

cevap

0

İşlemleri durdurmak için pm2 kullanmayı denediniz mi?

pm2 start app.js 

Sonra durdurmak için
pm2 stop app.js 

sen um2'den ile durmaya Eğer um2'den incelikle kapatmaya izin verilmez öldürdüğünüzde. Sunucunuz yeniden başlatılırsa süreçlerinizin yeniden başlatılacağını düşünüyorum. küme kullanırken

http://pm2.keymetrics.io/docs/usage/process-management/