2016-04-25 10 views
1

Ich helfe einem Freund mit der Migration einer Parse-App auf einen dedizierten Server im Gegensatz zu einem Hosting-Provider, und ich habe stecken bleiben versuchen, einen Fehler zu beheben, den ich DENKEN bin in der Parse Server-Instanz auf dem Server.MongoError schreibe EPIPE "in Parse-Server Installation

, Zum einen ist hier der Fehler-Stack von der PM2-Logs, es jedes Mal, wenn ein GET oder POST gemacht wird an den Server geworfen wird: Ich bin nicht wirklich sicher, wie der Art der

parse-wrapper-0 (err):  at null.<anonymous> (/usr/lib/node_modules /parse-server/node_modules/mongodb-core/lib/connection/pool.js:119:12) 
parse-wrapper-0 (err):  at g (events.js:273:16) 
parse-wrapper-0 (err):  at emitTwo (events.js:100:13) 
parse-wrapper-0 (err):  at emit (events.js:185:7) 
parse-wrapper-0 (err):  at Socket.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/connection/connection.js:144:49) 
parse-wrapper-0 (err):  at Socket.g (events.js:273:16) 
parse-wrapper-0 (err):  at emitOne (events.js:90:13) 
parse-wrapper-0 (err): error: Uncaught internal server error. { [MongoError: server localhost:27017 received an error {"name":"MongoError","message":"write EPIPE"}] 
parse-wrapper-0 (err): name: 'MongoError', 
parse-wrapper-0 (err): message: 'server localhost:27017 received an error {"name":"MongoError","message":"write EPIPE"}' } MongoError: server localhost:27017 received an error {"name":"MongoError","message":"write EPIPE"} 
parse-wrapper-0 (err):  at null.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/topologies/server.js:308:40) 
parse-wrapper-0 (err):  at emitTwo (events.js:100:13) 
parse-wrapper-0 (err):  at emit (events.js:185:7) 
parse-wrapper-0 (err):  at null.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/connection/pool.js:119:12) 
parse-wrapper-0 (err):  at g (events.js:273:16) 
parse-wrapper-0 (err):  at emitTwo (events.js:100:13) 
parse-wrapper-0 (err):  at emit (events.js:185:7) 
parse-wrapper-0 (err):  at Socket.<anonymous> (/usr/lib/node_modules/parse-server/node_modules/mongodb-core/lib/connection/connection.js:144:49) 
parse-wrapper-0 (err):  at Socket.g (events.js:273:16) 
parse-wrapper-0 (err):  at emitOne (events.js:90:13) 

Seit Das Problem (Ich habe nachgesehen, was der EPIPE-Fehler ist, aber ich bin mir nicht sicher, warum es auf GETs passiert oder warum es jedes Mal schließt), ich gebe nur jede Information über den Server, die ich mir vorstellen kann ist dafür relevant.

Dies ist die relative Benutzerstruktur jetzt:

root -defuser: die Mongo Instanz sowie nginx -parse ausgeführt wird: Lauf Parse über PM2

ist die ecosystem.json Datei PM2 verwendet :

{ 
    "apps":[{ 
    "name" : "parse-wrapper", 
    "script" : "/usr/bin/parse-server", 
    "watch" : true, 
    "merge_logs" : true, 
    "cwd" : "/home/parse", 
    "env" : { 
     "PARSE_SERVER_CLOUD_CODE_MAIN": "cloud/main.js", 
     "PARSE_SERVER_DATABASEURI": "mongodb://parse:[email protected]:27017/beerdb?ssl=true", 
     "PARSE_SERVER_APPLICATION_ID": "super secret Parse key", 
     "PARSE_SERVER_MASTER_KEY" : " master key" 
    } 
    }] 
} 

Hier ist die mongo.conf Datei:

# mongod.conf 

# for documentation of all options, see: 
# http://docs.mongodb.org/manual/reference/configuration-options/ 

# Where and how to store data. 
storage: 
    dbPath: /var/lib/mongodb 
    journal: 
    enabled: true 
# engine: 
# mmapv1: 
# wiredTiger: 

# where to write logging data. 
systemLog: 
    destination: file 
    logAppend: true 
    path: /var/log/mongodb/mongod.log 

# network interfaces 
net: 
    port: 27017 
    bindIp: 0.0.0.0 
    ssl: 
    mode: requireSSL 
    PEMKeyFile: /etc/ssl/mongo.pem 


#processManagement: 

security: 
    authorization: enabled 

#operationProfiling: 

#replication: 

#sharding: 

setParameter: 
    failIndexKeyTooLong: false 

## Enterprise-Only Options: 

#auditLog: 

#snmp: 

Ich glaube nicht, nginx hat nichts damit zu tun, aber hier ist die Config-unabhängig:

# HTTP - redirect all requests to HTTPS 
server { 
    listen 80; 
    listen [::]:80 default_server ipv6only=on; 
    return 301 https://$host$request_uri; 
} 

# HTTPS - serve HTML from /usr/share/nginx/html, proxy requests to /parse/ 
# through to Parse Server 
server { 
    listen 443; 
    server_name domain.here; 

    root /usr/share/nginx/html; 
    index index.html index.htm; 

    ssl on; 
    # Use certificate and key provided by Let's Encrypt: 
    ssl_certificate /etc/letsencrypt/live/domain.here/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/domain.here/privkey.pem; 
    ssl_session_timeout 5m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 

    # Pass requests for /parse/ to Parse Server instance at localhost:1337 
    location/{ 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-NginX-Proxy true; 
      proxy_pass http://localhost:1337/parse/; 
      proxy_ssl_session_reuse off; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 
    } 


} 

ich hier im Grunde aus Ideen bin, obwohl ich viel nicht gerade ein Experte bin mehr als nur Einstellung Apache, so könnte es eine dumme Aufsicht oder über meinen Kopf sein. Also, jede Hilfe wird geschätzt und es tut uns leid, wenn es etwas Einfaches ist.

Antwort

1

Ich habe das gleiche Problem mit meiner Bereitstellung. Es stellte sich heraus, dass Parse Dashboard eine Menge Verbindungen zu MongoDB hatte (in meinem Fall> 1k Verbindungen), daher müssen wir die maximale Verbindungsbeschränkung in mongo.conf und Dateideskriptor-Limit erhöhen (abhängig von Ihrem Betriebssystem).

Zum Beispiel in Linux:

  • Bearbeiten Sie die mongo.conf Datei und fügen maxConns = 10000
  • bearbeiten die /etc/sysctl.conf Datei und fügen fs.file-max = 10000
  • Lauf ulimit -n 50000
+0

fs.file-max = 1000000 in sysctl.conf behebt ein Problem für mich, bei dem GridFS den obigen Fehler verursachte, als ich versuchte, eine ~ 500MB Datei zu konsumieren. – Wollan

Verwandte Themen