私は実行中のSwiftサーバで若干再現性の問題があります。これはKituraを使用したマルチスレッドサーバーです。基本的なことは次のとおりです。サーバーが一定期間稼動した後、ダウンロード要求はクライアントからの再試行が必要です(通常は3回再試行)。クライアントからの試行により、サーバースレッドは終了しません。サーバー上で、ログに次のようなダウンロードの問題が表示されます。Swift Kitura Serverが一部のスレッドを終了しないのはなぜですか?
[INFO] REQUEST /DownloadFile: ABOUT TO END ...
この要求は決して終了しません。
私のサーバー内の関連するフラグメント・コードは次のようになります。
ある// <snip>
Log.info(message: "REQUEST \(request.urlURL.path): ABOUT TO END ...")
do {
try self.response.end()
Log.info(message: "REQUEST \(request.urlURL.path): STATUS CODE: \(response.statusCode)")
} catch (let error) {
Log.error(message: "Failed on `end` in failWithError: \(error.localizedDescription); HTTP status code: \(response.statusCode)")
}
Log.info(message: "REQUEST \(request.urlURL.path): COMPLETED")
// <snip>
、サーバがはっきりend
(Kitura法)への呼び出しにハングアップするようです。この問題は、最後の時間を思い付いた直前https://github.com/crspybits/SyncServerII/blob/master/Sources/Server/Setup/RequestHandler.swift#L105にも
を参照してください、私は私のサーバーログに次のように観測さ:
[2017-07-12T15:31:23.302Z] [ERROR] [HTTPServer.swift:194 listen(listenSocket:socketManager:)] Error accepting client connection: Error code: 5(0x5), ERROR: SSL_accept, code: 5, reason: DH lib
[2017-07-12T15:31:23.604Z] [ERROR] [HTTPServer.swift:194 listen(listenSocket:socketManager:)] Error accepting client connection: Error code: 1(0x1), ERROR: SSL_accept, code: 1, reason: Could not determine error reason.
[2017-07-12T15:31:23.995Z] [ERROR] [HTTPServer.swift:194 listen(listenSocket:socketManager:)] Error accepting client connection: Error code: 1(0x1), ERROR: SSL_accept, code: 1, reason: Could not determine error reason.
[2017-07-12T15:40:32.941Z] [ERROR] [HTTPServer.swift:194 listen(listenSocket:socketManager:)] Error accepting client connection: Error code: 1(0x1), ERROR: SSL_accept, code: 1, reason: Could not determine error reason.
[2017-07-12T15:42:43.000Z] [VERBOSE] [HTTPServerRequest.swift:215 parsingCompleted()] HTTP request from=139.162.78.135; proto=https;
[INFO] REQUEST RECEIVED:/
[2017-07-12T16:32:38.479Z] [ERROR] [HTTPServer.swift:194 listen(listenSocket:socketManager:)] Error accepting client connection: Error code: 1(0x1), ERROR: SSL_accept, code: 1, reason: Could not determine error reason.
私はこれは私がわからない感覚でどこから来ているかわかりません私のクライアントの1人がこれを生成している場合。私は明示的にサーバーに "/"を要求していません。 (私はときどき私のサーバーではないクライアントからの要求を見ることがあります - これはこれらの1つである可能性があります)。これらのログメッセージの1つを除き、すべて私のコードから直接ではなく、Kituraから来ていることに注意してください。私のログメッセージは[INFO] REQUEST RECEIVED: /
です。
私が賭け人だった場合は、上記のエラーによってサーバーが状態になり、その後、このダウンロード/再試行動作が確認されます。
私の唯一の解決策は、サーバーを再起動することです。そこから問題は直ちに起こらない。
思考?