我们有一个node.js Web服务器,它向外部API发出一些传出的http请求.它使用dokku在docker中运行.
经过一段时间的加载(30req/s)后,这些传出请求不再得到响应.
这是我用常量req/s测试时的图表:
incoming并且outgoing是并发请求的数量(不是初始化请求的数量).(在图表中很难看到,但每次约10次请求时它相当稳定.)
response time仅适用于外部请求.你可以清楚地看到他们突然失败了(达到1000毫秒超时).
我们发送的req/s越多,我们遇到这个问题的速度就越快,所以我们必须有一些限制,我们越来越接近每个请求.
我netstat -ant | tail -n +3 | wc -l在主机上用来获取开放连接的数量,但它只有~450(大多数TIME_WAIT).这不应该达到套接字限制.我们也没有达到任何RAM或CPU限制.
我也尝试在docker之外的同一台机器上运行相同的应用程序,它只发生在docker中.
我正在使用在HttpHandler子项中实现的HttpContext对象来下载文件,当我在文件名中有非ascii字符时,它在IE中看起来很奇怪,而在Firefox中看起来很好.
以下是代码: -
context.Response.ContentType = ".cs";
context.Response.AppendHeader("Content-Length", data.Length.ToString());
context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}",filename));
context.Response.OutputStream.Write(data, 0, data.Length);
context.Response.Flush();
Run Code Online (Sandbox Code Playgroud)
当我在文件名称字段中提供"嗯""澶'Ã'那张"A 3""嗯""澶'Ã'那张"A 3"它看起来比不同我有什么文件在Firefox中看起来很好看.添加EncodingType和charset一直没用.
在IE中它是'ÃÂ' 'ä' 'ÃÂ' 'ü' 'ó' 'ÃÂ' 'ä' 'ÃÂ' 'ü' _ 'ó',并在Firefox是'嗯'" Ã''''''''''''''''''''''''''''''''''''''''''''''''
任何想法如何解决这个问题?
我想计算字符数,但它们可能被不匹配的字符分开.
这是一个例子.我想匹配一个包含10个或更多单词字符的文本.它可能包括空格,但我不想计算空格.
如果不匹配:"富酒吧巴兹"(应该算9)
如果不匹配:"一个一"(应该算2)
应符合:"富巴兹酒吧"(应该算10,匹配整个字符串)
这就是我提出的,但它重要的是:
((?<=\s)*\w(?=\s)*){10}
Run Code Online (Sandbox Code Playgroud)
编辑我不想包含空格来计算.对不起,我编辑了几次,我没有正确描述.
有什么想法吗?
我有一个小脚本来自动化 YAML 文件中的一些事情。
我读取了原始的 YAML 文件并将其转换为哈希,然后在修改后将其转储到文件中:
File.open(output_file, "w") do |out|
YAML.dump(modified_hash, out)
end
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果不需要,它会删除字符串周围的双引号。这是有效的 YAML,但它看起来不太好。
我可以在每个字符串的末尾添加一个空格来强制使用单引号,但我对此不太满意。有没有办法在字符串周围强制使用双引号?