如果我玩那些命令: sync echo 3 > /proc/sys/vm/drop_caches 将服务器强制读取磁盘上的正确的文件,直到我再次把0? 或者这个工作只有一次,如果我想再次清除caching,我必须把0和3再次? 谢谢
我尝试使用nginx的proxy_cachefunction来提供索引页面。 一切工作正常与普通的浏览器。 但是当我尝试使用curl获取页面的内容,或者当我在索引页面上使用围攻时,nginx开始不按我的预期工作。 当页面caching过期时,它将请求传递给apache。 我无法理解,为什么nginx在curl或siege请求时不会创build索引页面的新caching? 这里是nginx.conf的一部分: proxy_cache_path /var/cache/nginx levels=2 keys_zone=pagecache:100m inactive=1m max_size=500m; location = / { set $o_uri $request_uri; if ( $http_cookie !~ "mytestcookie" ) { rewrite ^ /ng_cache last; } proxy_pass http://127.0.0.1:88; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /ng_cache { internal; root /home/$host/www; proxy_cache pagecache; proxy_cache_valid 200 301 302 […]
我有一个提供HTML代码的服务,在某些时候它不再被更新。 代码总是从数据库中dynamic地生成,有1000万个条目,因此每个HTML代码页面呈现在那里search60或70个条目,然后呈现页面。 所以,对于那些过期的页面,我想使用caching系统,这将是非常简单的(就像input一个带有HTML呈现的logging和(如果我需要的话)删除它)。 我试图做到基于文件,但寻找一个文件的存在,然后通过PHP传递给它实际上,它似乎太多,我想要做什么。 我正在考虑在一个带有MEDIUMBLOB的表上使用mysql(每页大约100k)。 它将保存大约150000个这样的logging(至less现在是这样)。 我的问题是:让mysql执行文件查找和传递到php还是基于文件的方法更快? 基于文件的版本的查找代码如下所示: $page = @file_get_contents(getCacheFilename($pageId)); if($page!=NULL) { echo $page; } else { renderAndCachePage($pageId); } 它会查找是否find该文件。 MySQL表只会有一个ID(页面ID)和BLOB条目。 该系统的磁盘是一个简单的SATA RAID 1,MySQL守护进程可以获取高达2.5GB的内存(我也有一个代理运行,吃剩下的16GB的机器。) 一般来说磁盘已经很忙了。 我没有使用PEARcaching,是因为我认为(请随时纠正我)这增加了开销,我不需要,因为页面渲染代码被称为每天大约2M次,我不想通过整体代码每次(是的,我也有eacceleratorcaching代码)。 任何指向我应该去哪个方向的指针,将是非常受欢迎的。 谢谢!
我想让我的清漆服务器caching所有文件。 在后端有lighttpd仅托pipe静态文件,并且在文件更改的情况下,在URL中有一个md5 。 /gfx/Bird.b6e0bc2d6cbb7dfe1a52bc45dd2b05c4.swf )。 但是我的命中率很差(大约0.18) 我的configuration: sub vcl_recv { set req.backend=default; ### passing health to backend if (req.url ~ "^/health.html$") { return (pass); } remove req.http.If-None-Match; remove req.http.cookie; remove req.http.authenticate; if (req.request == "GET") { return (lookup); } } sub vcl_fetch { ### do not cache wrong codes if (beresp.status == 404 || beresp.status […]
我注意到我的域环境; 旧的pipe理员密码(在密码过期之前)..客户端机器已经caching了旧的密码,并有能力绕过新的密码input旧的..? 基本上; 我正在运行一个启用了UAC的域,它需要pipe理员密码来继续基本的东西; 装置等。 由于所述账户密码到期,pipe理员账户的密码已经改变。 由于意外,pipe理员input了旧的密码,仍然绕过UAC,密码不正确。 这是一个与环境的错误? 或者需要在服务器端设置中进行调整?
寻找理想的设置,包括nginx作为我们的顶层负载均衡器,负载分布在多个Varnish实例中。 什么是分配这个负载的最佳方式? 一种方法是简单地在实例之间均匀分配,另一种方式是根据请求URL模式分配负载。 有这个最好的做法吗? 另外 – 我们需要手动(从后端)清除caching中的特定项目。 要做到这一点,最简单的方法是向我们的每个Varnish实例发出一个小的HTTP“PURGE”请求。
我刚刚使用PHP Handler FastCGI安装了APC。 但是看起来Cache并不工作。 if(($t=apc_fetch('key_4321'))===FALSE){ $t=time(); apc_add('key_4321', $t, 24*60*60); } echo $t; 几乎每次我运行它,我都得到了不同的时间戳。 只有几次,它仍然是相同的结果。 可能的原因是什么? 我正在使用PHP版本5.3.21和服务器API是CGI / FastCGI。 Server Software Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_fcgid/2.3.6 以下是我的APC设置。 Configuration apc APC Support enabled Version 3.1.13 APC Debugging Disabled MMAP Support Enabled MMAP File Mask no value Locking type File Locks Serialization Support php Revision […]
有没有办法让squid检查caching的内容是否过期?如果caching的内容已经过时,如何让鱿鱼从原始服务器上获取最新的内容?
我想要做的是: 某种types的应用程序/驱动程序创build一个实际分配了驱动器号的RAM驱动器/分区(例如D :)。 此驱动器号应该基于/镜像物理目录的特定目录(例如C:\ MyDBData)。 在应用程序/驱动程序启动时,我期望应用程序/驱动程序将目录中的所有文件读入内存,并locking它们以防止其他应用程序写入这些文件。 所有文件然后在RAM驱动器上可用。 每个读取操作都可以从内存中完成,我想这将是一个主要的性能提升。任何写操作都应该对物理目录进行“直写”,或者使用最大1秒的缓冲区。 (所以在电力损失的情况下,损失将是最小的。) 当然这个应用程序/驱动程序需要一些自己的RAM,并且会在CPU负载上产生一些轻微的开销。 不过,我预计主要performance会有所提升。 我想用它的是: 为了加快我的5 GB的MySQL数据库,我想将所有表移动到我的8 GB的RAM。 即使MySQL确实支持内存表,但是这个限制让我无法实现。 例如,堆表中不允许使用text / blob字段。 对于5 GB RAM的8 GB RAM是否足够,上述应用程序/驱动程序的开销,mysqld本身以及操作系统的其他部分,还是一个猜测。 但我可以考虑升级到12GB甚至16GB的内存。 我的问题是 我认为这种技术已经存在。 它叫什么,我在哪里可以find它的一个很好的实现? (最好是开源的,适用于Windows) 即使有关Mysql vs内存的提示是受欢迎的,也许这个想法我不是解决Mysql问题的最好方法,但我仍然想探索一下我所拥有的目录到内存的问题。 编辑:我刚才在类似的问题阅读是,这被称为文件系统caching,并存在于大多数现代操作系统。 但是,如果这是要走的路,我该如何指示我的操作系统增加文件系统caching,并在任何时候专门保持整个5GB目录在该caching中?
下面是我经过大量阅读和引用后构build的default.vcl,varnishconfiguration文件: backend default { .host = "127.0.0.1"; .port = "8080"; } acl purge { "localhost"; } # Called when a request is received sub vcl_recv { if (req.request == "BAN") { if(!client.ip ~ purge) { error 405 "Not allowed."; } ban("req.url ~ "+req.url+" && req.http.host == "+req.http.host); error 200 "Banned."; } if (req.request != "GET" […]