小编Ben*_*ams的帖子

什么限制了 Linux 服务器上的最大连接数?

什么内核参数或其他设置控制可以在 Linux 服务器上打开的最大 TCP 套接字数?允许更多连接的权衡是什么?

我注意到在使用ab对 Apache 服务器进行负载测试时,很容易最大化服务器上​​的开放连接。如果你不使用 ab 的 -k 选项,它允许连接重用,并让它发送超过 10,000 个请求,那么 Apache 会处理前 11,000 个左右的请求,然后停止 60 秒。查看 netstat 输出显示 11,000 个连接处于 TIME_WAIT 状态。显然,这是正常的。出于TCP 可靠性的原因,即使在客户端完成连接后,连接也会保持打开的默认值 60 秒。

这似乎是对服务器进行 DoS 的一种简单方法,我想知道它的常用调整和预防措施是什么。

这是我的测试输出:

# ab -c 5 -n 50000 http://localhost/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
apr_poll: The …
Run Code Online (Sandbox Code Playgroud)

linux performance tuning scaling apache-2.2

96
推荐指数
2
解决办法
20万
查看次数

为什么 JBoss 和 Logrotate 会创建充满 NUL 字符的日志文件?

我已经设置了 Logrotate 来每晚轮换我的 JBoss Application Server 4.2.2.GA 日志。在轮换日志文件并且 JBoss 再次开始写入它们之后,新日志文件以与前一个日志文件中的字符一样多的 NUL 字符开头,然后是新的日志消息。例如,如果 JBoss server.log 文件的长度为 5000 字节,那么在轮换后,新的 server.log 文件将以 5000 个 NUL 字符开头。几天后,server.log 以 NUL 字符开始,相当于前几天所有日志文件中字符的总和。似乎 JBoss 正在记住它在日志文件中的位置,并在截断的文件中从它停止的地方开始。这是我的 JBoss 的 logrotate 配置:

/apps/jboss-4.2.2.GA/server/default/log/*log {
    daily
    rotate 30
    compress
    notifempty
    copytruncate
    missingok
    nocreate
}
Run Code Online (Sandbox Code Playgroud)

我无法每晚重新启动 JBoss,因为那会导致停机时间过长。我也不能使用 log4j DailyRollingFileAppender,因为它不会删除旧的日志文件。有没有人让 logrotate 与 JBoss 一起正常工作?

rhel4 jboss logrotate log4j

7
推荐指数
2
解决办法
1万
查看次数

如何管理经常访问的主机列表?

如何快速选择并登录需要通过ssh访问的多台主机?我正在构建一个如下所示的 shell 脚本,用于dialog从命令行显示主机菜单,但我很好奇是否有更好的方法。

#!/bin/dash
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

while [ 1 ]
do
    dialog --menu "Select Host" 0 0 0 \
    "hostname1" "Host description 1" \
    "hostname2" "Host description 2" \
    "hostname3" "Host description 3" 2> $tempfile

    HOSTNAME=`cat $tempfile`

    if [ "x" = "x$HOSTNAME" ]; then
        break
    fi

    ssh $HOSTNAME
done
Run Code Online (Sandbox Code Playgroud)

linux ssh command-line-interface

7
推荐指数
1
解决办法
3356
查看次数

有没有办法将 bash 配置为始终页面输出?

我想配置 bash 来分页所有命令的输出。本质上,我希望 bash 的行为就像我输入的每个命令都以 '| 结尾一样。较少的'。这可能吗?

shell bash paging

5
推荐指数
1
解决办法
3222
查看次数

当一个命令用太多输出淹没你的终端时你会怎么做?

我试图解决一个常见的烦恼:当 SSH 连接到远程服务器时,我经常做的事情产生的输出比我预期的要多得多。例如,使用一种过于笼统的模式对大型日志文件进行 grep 处理。当垃圾翻滚时,我坐在那里敲击 ^C 并希望我记得少用管道。到目前为止,我最好的想法是尝试将我的 shell 配置为始终页面输出,我问了另一个问题。除此之外,我只有不太理想的解决方案:

  • 耐心等待输出完成
  • 训练自己总是少管闲事
  • 获得更大的管道和更快的盒子,以便输出更快

你做什么工作?

ssh shell bash terminal less

5
推荐指数
1
解决办法
1046
查看次数

如何在 Tomcat 中禁用 ETag 标头

默认情况下,Tomcat 似乎为每个响应发送一个 ETag 标头。由于此处概述的原因,我想禁用这些。我知道我可以在我的 Apache 配置中删除它们,但是有什么方法可以在 Tomcat 端禁用它们吗?

performance tomcat http-headers etags

4
推荐指数
1
解决办法
1万
查看次数

当 SpamAssassin 未运行时告诉 Postfix 不要发送邮件

我已将 Postfix 配置为使用 SpamAssassin spamd 守护进程过滤邮件。我最近注意到一些垃圾邮件会发送到我的收件箱,但没有添加 SpamAssassin 标头。我发现这一点是因为我每天都有一个 cron 作业来更新 SpamAssassin 并sa-update重新启动 spamd。当 Postfix 在 spamd 恰好重新启动时收到邮件时,它会在不进行过滤的情况下传递该邮件。

我的解决方案是更改 cron 作业,在重新启动 spamd 之前停止 Postfix,然后重新启动。这是最好的解决方案吗?我可以以某种方式告诉 Postfix 暂停所有投递吗?我可以更改对 spamd 的调用,使其阻塞直到 spamd 返回吗?

这是我的 SpamAssassin 行/etc/postfix/master.cf

spamassassin unix  -       n       n       -       -       pipe user=nobody argv=/usr/bin/spamc -u ${user} -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Run Code Online (Sandbox Code Playgroud)

postsuper -h ALL我找到了使用搁置传递的参考,但这似乎只保留当前在 Postfix 队列中的消息。我发出后收到的新消息postsuper -h ALL仍然正常发送。

postfix spam spamassassin

3
推荐指数
1
解决办法
836
查看次数