我在配置文件中将 tcp_tw_recycle/reuse 都设置为 1。
这样做的后果是什么?
如果重复使用 tcp 套接字,是否会带来安全风险?即 2 个不同的连接都可能能够发送数据?
它适用于重新连接机会很小的短期连接吗?
Ubuntu 似乎有 1024 个打开文件描述符的默认限制。Nginx 在我做的一些负载测试中抱怨已达到最大数量并且服务器基本上无法使用。
我正在测试一项服务,该服务必须每秒维持 2-3K 请求,并且每个请求都将保存到一个文件(或可能是另一个存储,如 mysql 等)。这些文件将在 x 分钟内从服务器中清除。
如果我运行 ulimit -n 并增加打开文件描述符的数量,这有什么后果?它是否使 o/s 留出更多内存来管理文件描述符,或者还有更多内存?
我正在使用 apache bench 为在 tomcat 上运行的 java 应用程序运行一些基准测试。
说我运行一个测试,如:
ab -c 10 -n 10000 http://localhost:8080/hello/world
Run Code Online (Sandbox Code Playgroud)
它会运行得很好。如果我遵循它:
ab -c 50 -n 50000 http://localhost:8080/hello/world
Run Code Online (Sandbox Code Playgroud)
再次它会运行良好,但如果我再试一次,它可能会在 3500 个完成的请求后开始变慢。
我需要帮助来尝试调试此问题的根本原因。
我跑到了上面,我有一些未使用的内存,所以内存似乎不是问题。
tomcat6 进程确实达到了 70-80 甚至 107%。
似乎重新启动 tomcat 可以解决问题,但有时需要重新启动服务器。
这是在分配了 200 个线程的默认 tomcat 安装上。
Tomcat 日志为空。
更新
因此,我将 tcp_tw_recycle/reuse 都更改为 1,并且现在运行 netstat 显示的计数非常低。
在更改 tcp_tw_recycle/reuse 之前,我注意到事情变慢并运行 netstat 并且我有 32400 个 tcp TIME_WAIT 连接。
所以现在运行基准测试的更新,使用 -k 开关,我看到了更多的吞吐量。但是,在某些时候事情又开始变慢了,但是现在重新启动 tomcat 使事情恢复正常。之前,即使我重新启动tomcat,运行ab 的响应时间也会非常非常慢。 现在更改 tcp_tw_recycle/reuse 后,重新启动 tomcat 使事情恢复正常。运行 top 显示只有大约 20% 的 cpu 的 tomcat,所以现在看来问题出在 tomcat 上,但我怎么知道是什么?
我相信 stackexchange 在 IIS 和 Windows 服务器上运行。
我知道 Windows Server 没有任何类似于厨师/木偶的东西,但它确实有 powershell,可能还有其他我不知道的东西。
在 Windows 服务器上可以完成多少配置管理,以便我可以启动 ec2 实例并运行脚本来配置服务器。
配置方面:
注意:这是一个纯网络服务器,所以基本上只需要设置一个 IIS 网站,关闭 unwatned 服务,使用补丁更新 o/s 等。
(除了配置前端 Web 服务器然后创建自定义 AMI)
如果您将公共网络连接(比如 1 Gbps)耗尽到将请求代理到后端服务器的 haproxy 服务器,您有哪些选项可以扩展它?
由于所有请求流量都流经 haproxy,如果您的端口上没有剩余带宽,您如何扩展此设置?
我知道 taskset 可用于强制进程在特定 cpu 上运行。
如何强制 tomcat 在特定 CPU 上运行?
然后我想在单独的 CPU 上运行 apache bench。
更新
我很欣赏你关于不要这样做的建议,但我真的在寻找如何去做:)
这篇文章展示了如何:http : //mailinator.blogspot.com/2010/02/how-i-sped-up-my-server-by-factor-of-6.html
只是有点困惑你怎么知道哪个 CPU 是基于十六进制的?
ubuntu ×5
amazon-ec2 ×1
haproxy ×1
java ×1
multi-core ×1
nginx ×1
scalability ×1
socket ×1
tcp ×1
tomcat ×1
ulimit ×1