在许多较小的组织中,开发人员通常最终会做一些系统管理工作(出于显而易见的原因)。很多时候,他们拥有出色的开发人员技能,但很少有系统管理技能(可能都是自学的),因此必须边走边学,这是相当低效的。
在这种情况下,是否有规范的(或只是很棒的)书籍可以提供帮助?比仅使用 shell 更高级(大概开发人员可以这样做),但不是针对希望花很多年时间做这项工作的人。
理想情况下,一些相当通用的(虽然特定于某个发行版也可以),涵盖数据库、网络、一般维护等,而不仅仅是一项特定任务。
在大多数情况下,我对基于 shell 的工作感兴趣(即没有安装 GUI),但如果我遗漏了一些突出的东西,请指出。
(打个比方,用 C 替换“系统管理”,我想要K&R,用 C++,我想要 Meyers 的“Effective C++”)。
特别是,当 MyISAM 和 InnoDB 都没有缺少必需的功能(例如,您不需要外键)时,您如何在两者之间进行选择。
它总是归结为尝试和测量吗?或者是否有关于读取与写入的数量和频率以及其他类似措施的良好经验法则?表的大小对典型选择有影响吗?
我在 Debian 上使用 SpamAssassin(禁用 Pyzor、AWL 和 Bayes 并启用 sa-compile 的默认配置),并且每个 spamd 子进程在 32位服务器,在 64 位服务器上大约是这个(逻辑上足够)的两倍。通常有两个子进程,但在繁忙时间可能有五个(最多)正在运行。
ISTM 认为 200 到 600MB 是这项任务的大量内存。我想继续使用 SA 作为过滤结构的一部分,但越来越难以证明如此多的内存是合理的。
有没有办法减少每个子进程使用的内存量?(或者,让单个子进程如此之快,以至于我可以将最大子进程设置为 2 之类的东西?)。我愿意考虑任何选项,包括会或可能会导致准确性降低的选项。
我已经阅读了 SA wiki 上的“内存不足问题”页面;没有任何用处。不使用 SA 扫描大于 5 MB 的邮件。
我有一些脚本可以在必要时自动发送小型电子邮件通知。我从这些邮件中收到了少量自动回复消息(例如外出或休假)。是否有一个标题可以添加到电子邮件中,以向(表现良好的)自动回复者表明我对任何回复不感兴趣?
另请参阅此相关 StackOverflow 问题。
从这个问题开始。Debian,如果这很重要。
我知道分叉进程之间共享了一些内存。那么我如何确定一个进程/一组分叉进程使用了多少内存?
使用在这个类似问题中推荐的 smem 工具,我得到如下值:
Command Swap USS PSS RSS
/usr/sbin/spamd --create-pr 0 16820 24974 41628
spamd chil 0 19388 27581 44176
spamd chil 0 32328 40038 55708
Run Code Online (Sandbox Code Playgroud)
我理解交换列,RSS 列是通常报告的(例如在 ps 中)。从阅读 smem 文档来看,USS 是专门为那个孩子准备的内存,而 PSS 是进程间共享的一部分内存。但是,将 USS 添加到 PSS 会产生比 RSS 更高的值,而且我认为共享的意义会更小(所以我可能解释不正确)。
我不依赖于 smem 工具。我只想以某种方式获得“内存使用”数字,该数字在一定程度上准确反映了进程正在使用的实际内存量。
memory ×2
optimization ×2
email ×1
innodb ×1
linux ×1
myisam ×1
mysql ×1
spam ×1
spamassassin ×1
untagged ×1