[解決済み] テスト
2022-01-27 17:56:02
質問
nginxとnode serverを使用して更新リクエストを処理しています。大きなデータの更新を要求すると、ゲートウェイのタイムアウトが発生します。nginxのエラーログからこのエラーを確認しました。
2016/04/07 00:46:04 [error] 28599#0: *1 上流が早々に閉じた 上流からの応答ヘッダを読み込んでいる間に、接続が発生しました。 10.0.2.77, server: gis.oneconcern.com, request: "GET /update_mbtiles/atlas19891018000415 HTTP/1.1", upstream: "http://127.0.0.1:7777/update_mbtiles/atlas19891018000415", host: "gis.oneconcern.com"。
ググっていろいろ試したのですが、やはりエラーが出ます。
私のnginxのconfには、このようなプロキシ設定があります。
##
# Proxy settings
##
proxy_connect_timeout 1000;
proxy_send_timeout 1000;
proxy_read_timeout 1000;
send_timeout 1000;
私のサーバーはこのように構成されています。
server {
listen 80;
server_name gis.oneconcern.com;
access_log /home/ubuntu/Tilelive-Server/logs/nginx_access.log;
error_log /home/ubuntu/Tilelive-Server/logs/nginx_error.log;
large_client_header_buffers 8 32k;
location / {
proxy_pass http://127.0.0.1:7777;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
}
location /faults {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_buffers 8 64k;
proxy_buffer_size 128k;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
私はawsサーバー上のリクエストを提供するためにnodejsバックエンドを使用しています。ゲートウェイのエラーは、更新に長い時間(約3~4分)がかかる場合のみ表示されます。小さな更新ではエラーは出ません。どのようなヘルプも非常に高く評価されます。
Node jsのコード:
app.get("/update_mbtiles/:earthquake", function(req, res){
var earthquake = req.params.earthquake
var command = spawn(__dirname + '/update_mbtiles.sh', [ earthquake, pg_details ]);
//var output = [];
command.stdout.on('data', function(chunk) {
// logger.info(chunk.toString());
// output.push(chunk.toString());
});
command.stderr.on('data', function(chunk) {
// logger.error(chunk.toString());
// output.push(chunk.toString());
});
command.on('close', function(code) {
if (code === 0) {
logger.info("updating mbtiles successful for " + earthquake);
tilelive_reload_and_switch_source(earthquake);
res.send("Completed updating!");
}
else {
logger.error("Error occured while updating " + earthquake);
res.status(500);
res.send("Error occured while updating " + earthquake);
}
});
});
function tilelive_reload_and_switch_source(earthquake_unique_id) {
tilelive.load('mbtiles:///'+__dirname+'/mbtiles/tipp_out_'+ earthquake_unique_id + '.mbtiles', function(err, source) {
if (err) {
logger.error(err.message);
throw err;
}
sources.set(earthquake_unique_id, source);
logger.info('Updated source! New tiles!');
});
}
ありがとうございました。
解決方法は?
Nginxのエラーは、nodejsのサーバ(つまり、"upstream")によって接続が閉じられたことを示しているのではと思います。nodejsはどのように設定されていますか?
関連
-
[解決済み] テスト
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み] create-react-app、インストールエラー("コマンドが見つからない")。
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] nvm は npm config の "prefix" オプションと互換性がありません。
-
[解決済み] バルク更新を行う。
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
-
[解決済み] (13: Permission denied) 上流:[nginx]に接続中。
-
[解決済み】上流からレスポンスヘッダを読み込む際に、上流が送信したヘッダが大きすぎる。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】"npm update -g" の後に "Cannot find module 'npmlog'" というエラーが発生する。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] ExpressJS : res.redirect()が期待通りに動作しない?
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] Mongoose Schema がモデルとして登録されていません。