Ubuntu 服务器 10.04.1 x86
我有一台在 nginx 后面带有 FCGI HTTP 服务的机器,它为许多不同的客户端提供许多小的 HTTP 请求。(高峰时段每秒大约 230 个请求,平均响应大小为 650 字节,每天有数百万个不同的客户端。)
结果,我有很多套接字,挂在 TIME_WAIT 中(使用下面的 TCP 设置捕获图表):

我想减少套接字的数量。
除了这个我还能做什么?
$ cat /proc/sys/net/ipv4/tcp_fin_timeout 1 $ cat /proc/sys/net/ipv4/tcp_tw_recycle 1 $ cat /proc/sys/net/ipv4/tcp_tw_reuse 1
更新:有关机器上实际服务布局的一些详细信息:
客户端-----TCP-socket--> nginx(负载均衡器反向代理)
-----TCP-socket--> nginx (worker)
--domain-socket--> fcgi-software
--single-persistent-TCP-socket--> Redis
--single-persistent-TCP-socket--> MySQL (其他机器)
我可能应该切换负载平衡器 --> 工作线程连接到域套接字,但关于 TIME_WAIT 套接字的问题仍然存在——我计划很快在单独的机器上添加第二个工作线程。在这种情况下将无法使用域套接字。
我看到一些奇怪的 HTTP 请求来到我的 nginx 服务器。
为了更好地了解发生了什么,我想转储此类查询的整个 HTTP 请求数据。(即,将所有请求标头和正文转储到我可以阅读的地方。)
我可以用 nginx 做到这一点吗?或者,是否有一些 HTTP 服务器允许我开箱即用,我可以通过 nginx 代理这些请求?
更新:请注意,此框有大量正常流量,我想避免在低级别(例如,使用tcpdump)捕获所有流量并稍后将其过滤掉。
我认为首先在重写规则中过滤良好的流量会容易得多(幸运的是,在这种情况下我可以很容易地编写一个),然后只处理虚假流量。
而且我不想将虚假流量引导到另一个盒子,只是为了能够在那里使用tcpdump.
更新 2:为了提供更多详细信息,虚假请求foo在其 GET 查询中具有命名(例如)参数(参数的值可能不同)。好的请求保证永远不会有这个参数。
如果我可以通过它tcpdump或ngrep以某种方式过滤- 没问题,我会使用这些。
我们有一个远程 Xen 服务器,运行着很多来宾机器(在 Linux 上),只有几个 IP 可用。
每个来宾机器都应该可以通过 SSH 从外部直接访问。
现在我们为每台访客机器分配一个单独的域名,指向少数可用 IP 之一。我们还为那台访客机器分配了一个端口号。
因此,要访问名为 machine 的机器foo,应执行以下操作:
$ ssh foo.example.com -p 12345
...并访问名为的机器bar:
$ ssh bar.example.com -p 12346
双方foo.example.com并bar.example.com指向同一个IP。
是否有可能以某种方式摆脱此配置中的自定义端口并配置 SSH 服务器,侦听该 IP(或防火墙或服务器端的任何内容),以便根据域地址将传入连接路由到正确的来宾计算机,以便以下按预期工作?
$ ssh foo.example.com 主机名 # 打印 foo $ ssh bar.example.com 主机名 # 打印栏
请注意,我确实了解.ssh/config相关的客户端配置解决方案,我们现在正在使用它。这个问题专门针对零客户端配置解决方案。
我有一个 Ubuntu VM,在基于 Ubuntu 的 Xen XCP 中运行。它托管基于 FCGI 的自定义 HTTP 服务,位于nginx.
下从负载ab 第一CPU芯饱和,其余为欠载。
在/proc/interrupts我看来,CPU0 提供的中断比任何其他内核都多一个数量级。他们中的大多数来自eth1.
我可以做些什么来提高此 VM 的性能?有没有办法更均衡地平衡中断?
血腥细节:
$ uname -a
Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux
$ lsb_release -a
没有可用的 LSB 模块。
分销商 ID: Ubuntu
描述:Ubuntu 11.04
发布:11.04
代号:natty
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
283:113720624 0 0 0 0 0 0 0 xen-dyn-event … 我们想为我们的项目设置持续集成 (CI) 服务。CI 服务应该控制项目生命周期的所有方面,包括部署。
也就是说,我们希望在每次迭代时都有一个 CI 代理采用一个干净的系统(特别是 Ubuntu Server),在那里部署我们的项目并运行测试。
我们可能会从头开始自己编写 CI 服务,因为我们的生态系统相当不寻常。问题是:如何为每次 CI 迭代有效地提供全新的系统?
项目部署安装一些 Debian 包,配置几个 nginx 站点,并在系统范围内在特定于实现语言的包管理器 (LuaRocks) 中安装一些包。没有什么比这更具侵入性的了(我相信)。因此,与确保绝对隔离和清洁相比,能够快速设置干净的状态(在现代硬件上在一分钟内,更快——更好)更重要。
我看到了两种方法来做我们需要的事情:
但在这一点上,我没有足够的信息来决定。
你有什么建议?还有其他选择吗?有具体的工具名称吗?
注意:CI 服务将在 Citrix XenServer 来宾中运行。如果价格合理,付费解决方案是可以的。(通常他们在这个领域是不合理的。)远程 CI 解决方案不行。
我需要添加几行来/etc/hosts让我的 web 应用程序在 Docker 容器中工作。
Docker/etc/hosts是只读的。
我正在尝试使用 dnsmasq:
从 ubuntu:14.04 # ... 运行 apt-get install -y -q dnsmasq 运行 echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf 运行 echo 'resolv-file=/etc/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf 运行 echo 'conf-dir=/etc/dnsmasq.d' >> /etc/dnsmasq.conf 运行 echo 'user=root' >> /etc/dnsmasq.conf 运行 echo 'nameserver 8.8.8.8' >> /etc/resolv.dnsmasq.conf 运行 echo 'nameserver 8.8.4.4' >> /etc/resolv.dnsmasq.conf 运行 echo 'address="/mydomain/127.0.6.1"' >> /etc/dnsmasq.d/0hosts 运行服务 dnsmasq 启动
但是,我无法让 Docker 使用我的 DNS 服务器:
$ docker --dns=127.0.0.1 运行 my/container cat /etc/resolv.conf 名称服务器 8.8.8.8 名称服务器 8.8.4.4
我错过了什么?
配置: …
Ubuntu 10.4 服务器。
我有一个愚蠢的非交互式遗留服务,它在我的服务器上不断运行。
它正在将其日志写入具有固定名称的文件 (/var/log/something.log)。
它不处理任何释放日志文件的信号。我需要轮换那个日志文件。
有没有办法在不更改应用程序且不丢失日志中的任何数据的情况下正确执行此操作?
一堆具有唯一文件名的新文件定期在一台服务器上“出现” 1。(就像每天数百 GB 的新数据一样,解决方案应该可扩展到 TB。每个文件都有几兆字节大,最多几十兆字节。)
有几台机器可以处理这些文件。(十个,解决方案应该可以扩展到数百个。)应该可以轻松添加和删除新机器。
有备份文件存储服务器,必须在其上复制每个传入文件以进行存档存储。数据不能丢失,所有传入的文件必须最终交付到备份存储服务器上。
每个传入的文件都被传送到单个机器进行处理,并且应该复制到备份存储服务器。
接收服务器在发送文件后不需要存储文件。
请建议一个强大的解决方案,以上述方式分发文件。解决方案不得基于 Java。Unix 方式的解决方案是可取的。
服务器基于 Ubuntu,位于同一个数据中心。所有其他事情都可以根据解决方案要求进行调整。
1请注意,我有意省略了有关文件传输到文件系统的方式的信息。原因是第三方现在通过几种不同的传统方式发送文件(奇怪的是,通过 scp 和 ØMQ)。在文件系统级别削减跨集群接口似乎更容易,但如果一个或另一个解决方案实际上需要一些特定的传输 - 传统传输可以升级到那个。
我在 Ubuntu 9.10 x86 上使用s3fs 1.33。
我使用以下命令手动安装它:
sudo /usr/bin/s3fs mybucket /mnt/s3/mybucket -ouse_cache=/tmp
Run Code Online (Sandbox Code Playgroud)
如何在启动时强制安装?
我想我必须写点东西给/etc/fstab. 但是什么?以及如何在不重新启动服务器的情况下对其进行测试?
在服务器的auth.log:
来自 MYIP 端口 61313 ssh2 的 agladysh 公钥失败
在ssh -vvv:
debug1:提供公钥:/Users/agladysh/.ssh/id_rsa 调试 3:send_pubkey_test debug2:我们发送了一个公钥包,等待回复 debug1:服务器接受密钥:pkalg ssh-rsa blen 277 debug2: input_userauth_pk_ok: fp 指纹 debug3:sign_and_send_pubkey 服务器拒绝连接
我对authorized_keys.
我还检查了:
任何提示如何调试?
服务器:Ubuntu Server 11.04,客户端:Ubuntu 10.10(密钥从 OS X 转发,适用于其他服务器)。