- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在运行的 Swift 服务器上遇到了一些可重现的问题。这是一个多线程服务器,使用 Kitura。基本原理是:服务器运行一段时间后,下载请求开始需要客户端重试(通常重试三次)。来自客户端的尝试导致服务器线程不会终止。在服务器上,下载问题在日志中显示如下:
[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.
我不确定这是从哪里来的,因为我不确定我的客户是否正在生成这个。我没有用“/”明确向我的服务器发出请求。 (我偶尔会看到不属于我的客户端向我的服务器发出的请求 - 这可能是其中之一)。请注意,除了其中一条日志消息之外,所有日志消息均来自 Kitura,而不是直接来 self 的代码。我的日志消息是 [INFO] REQUEST RECEIVED:/
。
如果我是一个赌徒,我会说上述错误使我的服务器进入一种状态,之后我会看到这种下载/重试行为。
此时我唯一的解决方案是重新启动服务器。从那时起,问题不会立即发生。
想法?
最佳答案
我不确定这是否解决了根本问题,还是只是一种解决方法,但它似乎有效。对于问题中所述的服务器,我一直在使用 Kitura 的内置 SSL 支持。我现在已改用 NGINX 作为前端,不再使用 Kitura 的内置 SSL 支持。 NGINX 负责处理所有 HTTPS/SSL 详细信息。自从执行此操作(大约一个月前)以来,并且服务器在所有干预时间内都在运行,我还没有遇到此问题中报告的未终止
问题。另请参阅https://github.com/crspybits/SyncServerII/issues/28
关于swift - 为什么 Swift Kitura 服务器不终止某些线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45094293/
Swift kitura 框架是否支持多语言?我想使用作为 kitura 组件提供的 mustache 模板引擎。 最佳答案 Kitura 中没有“内置”多语言支持。话虽如此,可以简单地采用经典解决方
我已经下载了 Kitura 0.20 并创建了一个新项目用于在 swift build -c release 上进行基准测试 import Kitura let router = Router() r
是否可以向客户端发送一个响应并在其他线程上做一些工作,然后向客户端发送另一个响应,该工作完成了吗? 当前状态:直到我在我的异步回调方法中调用 next() block ,用户才获得任何数据。预期:获得
我是 Kitura 和 Xcode 的新手,在添加测试文件时遇到了一些问题。它似乎与@testing 指令有关。我的设置与 Kitura website 上显示的相同.当我在控制台中调用 swift
我创建了一个在本地运行良好的本地 swift kitura 应用程序。但是当我将它推送到 bluemix 时,实例开始运行然后失败。 最佳答案 很难说清楚,因为我看不到你的源代码。但这可能是因为您没有
我尝试做一个客户端-服务器应用程序,在客户端使用 Angular2/typescript 网站,在服务器端使用 Mac OSX 上的 Swift 中的 Kitura 服务器。在客户端,typescri
我在 Kitura 中有一个 TypeSafe Codeable 路由,定义如下: app.router.post("/games") { (auth: BasicAuth, respondWith:
第一篇文章! 我是一名学得很快的学生,正在参加一个相当大的速成类。我的教授上次开始教我们如何进行简单的获取和发布请求,但我还在跟进,很明显我还没有掌握一些基础知识。 这是我第一次使用 Kitura,也
我在运行的 Swift 服务器上遇到了一些可重现的问题。这是一个多线程服务器,使用 Kitura。基本原理是:服务器运行一段时间后,下载请求开始需要客户端重试(通常重试三次)。来自客户端的尝试导致服务
我正在尝试使用 Kitura 以 Swift 语言构建 REST API。 Kitura 中是否有任何 API 限速中间件或可以通过任何方式实现限速? 最佳答案 KituraLimiter是第三方为
我正在做一个 POC,使用 IBM 的 Kitura 应用程序将数据保存到 CouchDB 中。我能够使用脚本在 CouchDB 中上传一些数据,并能够使用 Web API 获取和发送这些数据。 同样
在 Vapor 中,我可以通过以下方式轻松保护登录 session 中的路由: drop.group(protect) { secure in secure.get("secureRo
我正在使用以下代码使用 Kitura 针对 CouchDB 执行 Swift 代码。 database.queryByView("high-priority-tasks", ofDesign: "p
我正在尝试按照此处所述扩充示例 Kitura 服务器端应用程序:http://www.kitura.io/en/starter/gettingstarted.html .按说明工作。然后我尝试添加 K
我当前的应用程序正在解析服务器上运行,我想将它移植到 Kitura。到目前为止,我已经成功连接到在 Parse Server 后面运行的 mongodb 并提供数据。 对于 web 部分,我已经设法使
我正在尝试弄清楚 Kitura 中带有参数的可编码路由是如何工作的。默认示例总是很简单,例如: GET /todos GET /todos/ 我要找的是: GET /todos//details 可编
任务 在 Bluemix 上托管的 Kitura 服务器上启用 CORS。 开发机 OS X 10.12.1,Swift 版本 3.0.2。 部署到 Ubuntu 14.04、Swift 3.0.1。
我想使用 Kitura 查看本地主机目录中的文件。我写过: router.all("/test/*", middleware: StaticFileServer()) 但是好像没有用 我想要目录中的所
我正在尝试在我的 Kitura 服务器端 Swift 应用程序中使用 CouchDB。我的 Package.swift 包含所有依赖项,如下所示: let package = Package(
我在和 Kitura 一起玩。我已经安装了一个看起来像这样的路由器端点: let router = Router() router.all() { _, response, next in r
我是一名优秀的程序员,十分优秀!