我在 Debian 上使用 SpamAssassin(禁用 Pyzor、AWL 和 Bayes 并启用 sa-compile 的默认配置),并且每个 spamd 子进程在 32位服务器,在 64 位服务器上大约是这个(逻辑上足够)的两倍。通常有两个子进程,但在繁忙时间可能有五个(最多)正在运行。
ISTM 认为 200 到 600MB 是这项任务的大量内存。我想继续使用 SA 作为过滤结构的一部分,但越来越难以证明如此多的内存是合理的。
有没有办法减少每个子进程使用的内存量?(或者,让单个子进程如此之快,以至于我可以将最大子进程设置为 2 之类的东西?)。我愿意考虑任何选项,包括会或可能会导致准确性降低的选项。
我已经阅读了 SA wiki 上的“内存不足问题”页面;没有任何用处。不使用 SA 扫描大于 5 MB 的邮件。
假设您有一个漂亮的新站点,其中包含大量数据(如大图像),并且您准备将其放到网上。如果你做“太多”的宣传,在最初的几天里,网站会被要求淹没。
我怎样才能减轻这种风险?
我想过
我不能:
有没有人知道一种让 nginx(或任何其他方法)即时缩小 html 输出的方法?这对我来说似乎很简单,可以减少一些 kb 并帮助加快网站速度。
是否可以禁用 InnoDB 表中的键?
如果是,如何?
如果不是,为什么?
我只是在WebPageTest.org上查看我们的网站,他们对加快网站速度的建议之一是:
通常不应使用 ETag 标头,除非您有明确的理由需要它们
我想知道这是什么意思。这是否意味着您知道不会更改的静态内容不应该包含它们,或者这是否意味着您知道将定期更改的内容不应该包含它们,或者是否意味着您不应该普遍使用它们,除非您有具体需要。
如果是后者,什么时候使用它们合适?
我将机器中的tcp初始窗口更改为10,如下所示
[user@site etc]$ sudo ip route change default via 17.255.209.1 dev eth0 proto static initcwnd 10
Run Code Online (Sandbox Code Playgroud)
并更改tcp_slow_start_after_idle为如下所示
[user@site etc]$ sudo sysctl -a | grep tcp_slow_start_after_idle
net.ipv4.tcp_slow_start_after_idle = 0
Run Code Online (Sandbox Code Playgroud)
下面给出了一个 ip 路由显示确认
[user@site etc]$ ip route show
default via 17.255.209.1 dev eth0 proto static initcwnd 10
169.254.0.0/16 dev eth0 scope link metric 1002
17.255.209.0/24 dev eth0 proto kernel scope link src 17.255.209.19
Run Code Online (Sandbox Code Playgroud)
现在,当我在网站上执行 tcpdump 时,我似乎没有看到初始窗口中的更改,WIN/MSS 仍为默认值4。5840/1460=4
[user@site etc]$ sudo tcpdump -n -i any 'tcp[tcpflags] …Run Code Online (Sandbox Code Playgroud) 测量 SQLServer 数据库碎片/性能下降并确定何时对 SQLServer 数据库表进行碎片整理的最佳实践是什么?
我最感兴趣的是了解有用的指标是什么以及应该触发碎片整理的性能下降程度。
我有一个很大的 MyISAM 表(~30M 行)。在某些时候,我已将其切换为固定行格式,因此现在表在磁盘上占用约 40Gb,索引占用 2Gb。表有一个唯一索引,每秒有 100 个“插入重复键更新”查询。随着表的增长,这些插入变得越来越慢。
我不确定,但是分区会帮助我加快插入速度吗?
我刚刚安装了一个通过 NFS 将 HTTP 视频流文件发送到 Web 服务器的服务器,我想确保我的传输速度得到优化。但我不知道什么样的读/写速率是典型的,所以我不知道我是否已经接近最大值。据我所知,wsize和rsize参数是重要的,但我不知道他们在默认为,如果它的价值改变它们。
根据有关 NFS 的 sourceforge 文章,我使用以下方法测试了写入速度:
time dd if=/dev/zero of=/mnt/data/video/testfile bs=16k count=16384
Run Code Online (Sandbox Code Playgroud)
我的写入速率为48MB/s。
我对此进行了多次测试(卸载/安装以清除缓存)并且此速度相当一致。
我测试了读取速度:
time dd if=/mnt/data/video/testfile of=/dev/null bs=16k
Run Code Online (Sandbox Code Playgroud)
并获得117MB/s的读取速率
以太网交换机和所有电缆都适用于 1Gb/s,并且两台机器上的 NIC 都设置为使用巨型帧(MTU=9000),并且在 /etc/exportfs 中我设置了async选项 - 速度对我来说比完美的数据更重要正直。两台机器都是相当标准的 HP Proliant,配备 7.2K SATA 驱动器(一个是 3G,另一个是 6G)。两台机器都使用Linux 2.6.18。发送文件的机器运行 CentOS 5.5,接收文件的机器运行 RHEL 5.4 (Tikanga)。
我希望测试过许多不同系统的人可以说出上述数字是否是 NFS 数据传输的典型值,或者是否有足够的空间来增加它们。
我正在尝试优化我们的 Web 服务器以处理尽可能多的连接。我阅读了很多帖子和 Apache 笔记。我试图了解我应该为 选择哪个值MaxRequestsPerChild。
起初,我尝试将其设置为 4,000,但服务器在处理许多请求时遇到困难,因此我开始提高它。目前我的设置是:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 40000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
将 设置MaxRequestsPerChild为 40,000 后,服务器设法在不使用更多内存/CPU 的情况下处理更多连接。
谁能告诉我这个值是太高了还是可以有这么高的值?
谢谢!
操作系统信息:
[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
total used free shared buffers cached
Mem: 3814660 3502968 311692 0 144368 2970468
-/+ buffers/cache: 388132 3426528
Swap: 5210104 0 5210104
Run Code Online (Sandbox Code Playgroud) optimization ×10
linux ×3
mysql ×2
performance ×2
apache-2.2 ×1
database ×1
defrag ×1
etags ×1
innodb ×1
memory ×1
mpm-prefork ×1
networking ×1
nfs ×1
nginx ×1
page-speed ×1
spam ×1
spamassassin ×1
sql-server ×1
tcp ×1
traffic ×1
web ×1
web-server ×1
website ×1