我有一个 512mb 的单核服务器实例。截至目前,我有大约 3 个网站,大约有 10k 篇文章,在所有网站上我都启用了 wp 超级缓存。典型的缓存时间为 3600 秒或 7200 秒。而且 vps 实例保持得很好。它每天只会出现一次约 60% 的 cpu 峰值。
我读到,一旦一个网站达到 30k 篇文章,由于文件数量(Linux 文件系统)或类似的原因,依赖 wp 超级缓存并不是一个好的做法。
所以我想也许我应该改用 nginx fastcgi 缓存。在他们的网站中,与 wp super cache 或 w3 Total Cache 相比,他们推荐将此作为最佳实践。
考虑到内存的数量,我有可用的。你们认为 fastcgi 缓存会是我网站的更好替代方案吗?
内存缓存呢?
我的 php 7.1 启用了 opcache。
我正在使用nginx 的expires指令;它的etag指令以及Last-Modified标题(如果我理解正确的话)默认情况下处于打开状态。
为了在使用限制性内容安全策略(CSP)标头(即无'unsafe-inline'资源策略)时允许特定的内联 JavaScript,我想使用随机数。
我基本上遵循了Scott Helme 关于此事的文章,在我的试验中使用 nginx$request_id来创建nonce ServerFault 上讨论的内容(以便快速尝试,而不必从头开始构建 nginx)。
然而,当我尝试此操作时,缓存似乎不再按我的预期工作:
Nginx 每次都以文件、新鲜Last-Modified和ETag标头进行响应,而不是304 Not Modified我希望的响应。
仔细想想,这是有道理的:nonceCSP 标头以及源代码中的 都会随着每个请求而变化。然而,其他一切都没有改变。因此,可以说,这是“弱验证器”应该忽略的更改(从而将请求的资源标记为未更改)。
话虽如此,我对服务器配置或缓存标头知之甚少,甚至一无所知。很可能我所掌握的少量知识没有帮助,而且弱验证器无论如何也不应该以这种方式工作。
此外,似乎存在一个问题,即当浏览器拥有旧文件的缓存版本nonce但获得304 Not Modified新文件的标头时,浏览器会感到困惑nonce(尽管我自己在试用中没有看到这一点)。
因此,我的问题基本上是:是否可以配置nginx,以便缓存以某种方式工作,当nginx创建和标头(即它只看起来的地方)时,对唯一的更改(即通过文本替换动态发生的更改)nonce被忽略Last-ModifiedETag在磁盘上的文件更改时) - 有效地使用什么可能是弱验证器?
并且,假设浏览器混乱是一个问题,您是否可以采取一些措施来阻止它,例如当服务器返回 304 时不返回 CSP …
我知道这yum clean all并不一定会清除所有包文件。我从“也许你想要: rm -rf /var/cache/yum ”中知道我可能不得不这样做,天哪,直率地清除所有/var/cache/yum. 但我刚刚发现我绝对不想清除所有的/var/cache/yum,因为显然安装了哪些软件包的记录也保存在某个地方。如果没有某些文件/var/cache/yum,rpm -qa似乎什么也打印不出来。
那么是否有一个简单的规则/var/cache/yum可以手动删除下面的其他文件,通过删除不需要的(或可以轻松重新下载的)包文件来节省空间,但保留系统的安装状态?
我的一个或多个假设可能完全错误。如果有欢迎指正。
更新:我在这里跳过一些细节,但是将所有内容从拥有它的系统复制到没有修复的/var/cache/yum系统(它仍然没有打印任何内容),所以看起来我的假设之一是有缺陷的,并且系统的安装状态保存在除.rpm -qa/var/var/cache/yum
更新2:我的一个假设是错误的。正如我最终发现的那样,正如 @shodanshok 在答案中指出的那样,当前安装的软件包的数据库位于/var/lib/rpm,而不是 /var/cache/yum。所以清除所有/var/cache/yum应该是安全的。
从本质上讲,页面缓存是虚拟文件系统 (VFS) 的一部分,您可以猜到,其主要目的是改善读写操作的 IO 延迟。
在计算中,页面缓存(有时也称为磁盘缓存)是源自辅助存储设备(例如硬盘驱动器 (HDD) 或固态驱动器 (SSD))的页面的透明缓存。
操作系统将页面缓存保留在主内存 (RAM) 的其他未使用部分中,从而可以更快地访问缓存页面的内容并提高整体性能。
基于以上所述,现有的用于监控页面缓存的工具有哪些?我希望监控使用情况、点击率,尤其是脏页。
操作系统版本为RHEL 7.X。
我已将单个磁盘导出为targetcliLinux 主机上使用的 iSCSI 目标。在远程计算机上,我已连接到该设备,并在其上放置了一个 ZFS 卷(作为带有 的复制目标zrepl)。
但是,每当我重新启动 iSCSI 目标计算机时,运行 ZFS 的启动器计算机就会失败并出现写入错误。经过一些研究后,这种类型的故障仅在 ZFS 向设备发送写入时发生,它被告知写入成功完成,但随后写入丢失。
这意味着 iSCSI 目标必须缓存写入并在实际写入磁盘之前返回成功,并且当计算机重新启动时,这些缓存的写入并不总是会被刷新。
有没有办法targetcli禁用此写入缓存,以便写入在实际写入物理磁盘之前不会成功返回?
我尝试将物理磁盘导出为pscsi后备存储,但这只会导致 iSCSI 目标内核在访问磁盘后立即崩溃。(没有使用虚拟机,只有两个本机 Linux 服务器,因此不应使用不常见的 SCSI 命令。)
/> ls
o- / .............................................................................................. [...]
o- backstores ................................................................................... [...]
| o- block ....................................................................... [Storage Objects: 1]
| | o- ar0 .......... [/dev/disk/by-id/ata-ST22000NT001-3LS101_ZX20XTYG (20.0TiB) write-thru activated]
| | o- alua ........................................................................ [ALUA Groups: 1]
| | o- default_tg_pt_gp ............................................ [ALUA state: Active/optimized]
| o- fileio ...................................................................... [Storage …Run Code Online (Sandbox Code Playgroud) 我们目前通过单个 Apache 服务器提供大型 (1GB+) 文件,但我们的 Apache 服务器非常受磁盘 IO 限制,我们需要扩展。
我的第一个想法是简单地复制这个 Apache 服务器,但是我们的文件库太大了,不能简单地将 Apache 服务器水平扩展 N 倍。
所以我的下一个想法是在后端有两个 Apache(高可用),每个都有我们整个库的单独副本......然后在前面有“N”个反向代理,其中“N”随着我们的交付需求的增长而增长。每个反向代理都占用大量 RAM,并且每 GB 具有尽可能多的心轴。后端 Apache 服务器更“存档”,并且主轴与 GB 之间的比率较低。
这是一个好的架构吗?有没有更好的处理方法?
这个问题主要涉及这一点,但在 64 位 Linux 上运行,我有一组数据缓存 JVM 以及想要一个大型 Web 缓存。今天的每个缓存都配置为完全适合系统内存 (24GB) 并在 LRU 中持久保存到磁盘。
但是,我很好奇如果我们**过度**分配缓存进程并为高优先级 Linux 交换设置 SSD 时的性能。我想知道 Linux 内核是否可能比我们简单的 LRU 进程更智能/更快?
我担心过度分配 JVM 堆并让内核交换堆页面作为 GC,它必须定期遍历所述页面。
好的:我已经建立了一个站点,其中包含一些我们向开发人员公开的 API,它们采用以下格式
/api/item.xml?type_ids=34,35,37®ion_ids=1000002,1000003&key=SOMERANDOMALPHANUM
Run Code Online (Sandbox Code Playgroud)
在这个 URI 中,type_ids 总是被设置,region_ids 和 key 是可选的。
需要注意的重要一点是,关键变量不会影响响应的内容。它用于请求的内部跟踪,因此我们可以识别发出缓慢或其他不需要的请求的人。
在 Varnish 中,我们有一个像这样的 VCL:
if (req.http.host ~ "the-site-in-question.com") {
if (req.url ~ "^/api/.+\.xml") {
unset req.http.cookie;
}
}
Run Code Online (Sandbox Code Playgroud)
我们只是去除 cookie 并让后端完成其余的工作(就时间而言,这是一种 hackaround,因为 Rails/authlogic 发送带有 API 响应的会话 cookie)。
但目前,任何不同的开发人员基本上都在访问不同的缓存,因为它们&key=SOMEALPHANUM被视为 Varnish 哈希存储的一部分。这显然不是一个很好的解决方案,我正在尝试找出如何告诉 Varnish 忽略 URI 的那部分。
浏览器缓存的最大文件大小是多少?请注意,我不是指浏览器缓存的最大大小。我的意思是,将被缓存的最大单个文件是多少。
如果有限制,在哪里记录?
我有一个 php 脚本,用于在网站上旋转横幅图像。
在 Firefox/IE 下,页面刷新将发出另一个请求并返回不同的图像。
在 Chrome 下,请求似乎被缓存,只有在新选项卡中打开页面才会导致它实际查询脚本。
我相信这曾经适用于旧版本的 chrome,我尝试了几种不同类型的重定向代码,结果都相同。
有小费吗?
<img class="banner" src="/inc/banner.php" alt="">
~$ cat /var/www/inc/banner.php
<?php
header("HTTP/1.1 302 Redirect");
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
//header('HTTP/1.1 307 Temporary Redirect');
//header("expires: none");
//header("expires: max");
//header("Cache-Control: public");
$folder = '../img/banner/';
$exts = 'jpg jpeg png gif';
$files = array(); $i = -1;
if ('' == $folder) $folder = './';
$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // …Run Code Online (Sandbox Code Playgroud)