我在 SSD 和 HDD 上安装了一个 Linux 服务器系统,用于用户数据。由于 SSD 上有剩余空间,我想将其用作 HDD 的读取缓存。
查看可能性,我发现:
dm-cache:根据https://www.redhat.com/en/blog/improving-read-performance-dm-cache在缓存显示性能改进之前需要大量读取。我认为在我的用例中这不是一个好的策略。
lvmcache:建立在 dm-cache 之上,我需要将 SSD 和 HDD 放入一个 LV。我想保持缓存透明,这样我就可以轻松地将 HDD 放入另一个系统,而无需先执行 LVM 魔术。
Bcache:我需要为 Bcache 格式化硬盘。不是我想要的。
Flashcache:听起来像我想要的(只需打开它),但根据https://github.com/facebookarchive/flashcache不再积极维护。
EnhanceIO:建立在 Flashcache 上,但自 2015 年以来已失效。
有没有类似于 Flashcache 或 EnhanceIO 的东西,但仍然积极维护?
我有一个具有 8GB 内存的网络服务器,并且正在运行一个非常密集的 php 站点(1 个站点),该站点可以进行文件操作、绘图、电子邮件、论坛,等等。环境远非静态,这让我相信在 ram 中缓存任何东西几乎没有什么好处,因为几乎每个对服务器的请求都会创建新的或更新的页面。很多缓存是在客户端完成的,所以当涉及到图像、javascript、css 时,我们有大量的 304 请求。
此外,我确实有语言文件被写入服务器上的平面文件,其中缓存的 ram 绝对是好的,而不是从磁盘读取。但是这样的文件屈指可数。
在大约两周内,我从拥有 98% 的空闲内存变成了 4% 的空闲内存。这发生在我们还将几个大型 svn 更新推送到服务器的时候。
我的问题是,如果我使用以下命令定期清除缓存(我知道 Linus Torvalds 对缓存的感觉),我的服务器是否会得到更好的调整:
sync; echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
或者我最好编辑以下文件:
/proc/sys/vm/swappiness
Run Code Online (Sandbox Code Playgroud)
如果我用 30 替换默认值 60,我应该有更少的交换和更多的陈旧缓存重用。
看到使用第一个命令释放所有缓存确实感觉很好,但如果我告诉你这对桌面环境有好处,那我就是在骗你。但是像我上面描述的那样的网络服务器呢?想法?
编辑:我知道系统将根据需要从缓存中获取内存,但感谢您指出我们的清晰。当大部分服务器内存存储在缓存中时 Apache 会变慢,我是否在想象事情?那是完全不同的问题吗?
我有一个 Linux samba 服务器,并且明确列出了可以访问该文件夹的用户。
我已经成功地将 Samba 配置为在从 Windows 访问共享时需要用户名和密码(使用 smbpasswd 等)。
但现在我想强制清除 Windows 机器上的身份验证缓存。例如,当我去同事的计算机时,我使用我的帐户访问受保护共享中的文件,但是在离开他的计算机之前,我要确保清除授权缓存,以便他无法访问该文件夹我的凭据。
几周前我在谷歌的 Windows 命令提示符中找到了要使用的命令,但我很傻,我没有保存它......
希望有人能帮忙,谢谢!
哦,Samba 被配置为工作组而不是域(如果有帮助的话) - 所以 Windows 用户不会在启动时登录到域。
在用于数据库的单个磁盘上禁用写入缓存的建议很常见,否则某些磁盘将确认尚未写入磁盘表面的写入。
这意味着某些磁盘在写入磁盘表面之前不会确认写入(更新:或者当被要求刷新缓存时它们会准确报告。我在哪里可以找到这样的磁盘,或者我可以在哪里查找权威信息在哪里可以找到这样的磁盘?
我正在设置一些可以从使用写入缓存中真正受益的数据库服务器,但该应用程序对价格敏感,我不想将某些缓存 RAID 控制器的磁盘子系统的成本增加一倍,因为我没有足够的信息知道我是否可以信任每个驱动器中的缓存。
我们有一个强大的 Windows 2008 x64 服务器(4 x 4 核 CPU,32GB RAM)运行 SQL Server 2005 64 位。我们有一个很小(6GB)但非常重要的数据库,它在页面缓存在内存中之前访问有点慢(使用是非常随机的 I/O,因此给定页面在内存中的几率非常低,最终用户抱怨最初的缓慢)。磁盘足够快(本地 15K SAS),但我猜该应用程序编写得有些笨拙(它是一个 COTS 解决方案)所以我想知道是否有办法在 SQL Server 2005(不支持 2008)的内存中“强制”数据库由供应商提供,所以我们不应该升级到那个)来帮助避免最初的缓存填充蓝调?
我目前的方法是,我从脚本中的每个表中运行 SELECT * 以获取内存中的数据页,但此方法未缓存某些对象(索引、全文搜索等)(并修改脚本以查询索引和将适当的 WHERE 子句写入缓存是一种复杂的海洋)。
我需要在 Web 服务器级别将动态内容包含到静态页面中。到目前为止,我发现的 2 个选项是Server Side Include (SSI)和Edge Side Include (ESI)。
虽然起源SSI似乎古老而晦涩(来自伊利诺伊大学 95 的缓存页面似乎是参考,显然它来自NCSA httpd曾经为大约 95% 的网络提供动力的网络服务器),但ESI似乎更近更近和令人欣喜(w3 2001 年的规范,主要由 Akamai 的人编写)。
另外,我一直在听说Varnish+ESI并且我想知道这是否应该是要走的路。但是,我已经有了一个设置nginx,它只支持SSI,并且希望遵循该KISS原则并Varnish尽可能避免使用。
对于我的直接用例,即在每个页面的顶部包含一个动态用户栏,我相信SSI可以完成这项工作。但是我担心随着我的网站的增长,我将需要仅支持的功能,ESI这将迫使我重新设计所有内容,这让我想到了我的问题(最终读者说):
哪些不支持的主要功能SSI会让您选择ESI(反之亦然)?
我所在的环境包含许多配备Adaptec和LSI MegaRAID硬件 RAID 控制器的Supermicro服务器。这些控制器包含电池供电的缓存模块,以帮助提高写入性能并保护传输中的数据。
常见的支持问题是 RAID 控制器电池故障。此偏移从阵列回写到写通模式。由于系统以降低的写入速度运行,这显然会对性能产生负面影响。这种情况一直存在,直到可以建立停机时间窗口以关闭系统电源并更换电池。
这对我们来说是非常常规的操作;几乎每周在数千个物理服务器上...我们甚至有充电站来准备更换电池,以便可以在没有充电周期的情况下更换电池。
也许我被 HP ProLiant 服务器和Smart Array RAID 控制器的悠久历史所宠坏,但 HP 系统的电池寿命通常为 4-6 年。他们最终在 2009 年左右取消了 RAID 电池的使用。它们被超级电容器支持的内存模块(闪存支持的写缓存,或 FBWC)所取代,并且不需要更换、处理或漫长的初始充电周期。
由于我看到 Adaptec 和 LSI 控制器电池故障有时发生在使用时间不到12 个月的系统上,我想知道这在其他环境中是否常见。
如果这是常见的,其他大型服务器环境如何处理?
LSI 产品资料概述了一种使用寿命超过 1 年的新一代电池。

HP ProLiant DL585 G2 服务器,具有 1000 多天的正常运行时间和令人满意的 RAID 电池...
# uptime
05:38:08 up 1031 days, …Run Code Online (Sandbox Code Playgroud) 我的 Web 服务器上有一个部署系统,每次部署应用程序时,它都会创建一个新的带时间戳的目录,并将“当前”符号链接到新目录。这一切在 apache 上都运行良好,但在我设置的新 nginx 服务器上,看起来正在运行来自“旧”部署的脚本而不是新的符号链接脚本。
我已经阅读了一些关于如何解决这个问题的教程和帖子,但没有太多信息,似乎没有任何效果。这是我的 vhost 文件:
server {
listen 80;
server_name ~^(www\.)?(?<sname>.+?).testing.domain.com$;
root /var/www/$sname/current/public;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires 7d;
}
location ~ \.php$ {
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
location ~ /\.ht {
deny all;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 fastcgi_params:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD …Run Code Online (Sandbox Code Playgroud) 我在设置一些自签名证书时浪费了很多时间;问题原来是浏览器(Chrome)缓存了一个错误版本的证书,然后就不放手。我做了很多修改证书的实验,结果发现这些实验没有测试任何内容,因为浏览器没有读取新版本的证书。
最后,我点击了浏览器地址栏中 URL 左侧显示的“无效”指示器。谁知道这是一个活跃的元素?单击它可以让我查看浏览器的证书版本。到期日期和时间与最新证书不匹配;这就是我知道浏览器使用了错误版本的方式。
我在 StackExchange 上发现了另一个类似的问题,但没有一个答案对我有用。(Chrome“设置”界面不断变化。)那么在 Chrome 版本 81 上如何清除证书缓存呢?
我去了我的 zoneedit.com,将 mydomain.com 更改为指向不同的 IP。但变化尚未生效。
这是因为我的 ISP DNS 正在缓存吗?
cache ×10
hard-drive ×2
linux ×2
memory ×2
nginx ×2
web-server ×2
battery ×1
certificate ×1
chrome ×1
database ×1
flashcache ×1
hardware ×1
ip ×1
php-fpm ×1
php7 ×1
remove ×1
samba ×1
sata ×1
sql-server ×1
ssd ×1
swapping ×1
varnish ×1
windows ×1