我们目前使用NGINX作为我们的服务器,我们使用memcache来cachingdb查询以及php中的页面。 我们有一个版本编号系统,在任何更新或插入的情况下,这个版本号都会被提升,结果是每个密钥都附加了这个版本号,所以memcache总是会获取新的数据。 它对我们很有用,因为读写%split是80/20%,所以大部分时间memcache将会返回数据,而不会触及数据库。 现在我们打算把这个caching策略移到服务器级别,NGINX和memcache模块一起使用请求URI和版本号cachingGET请求。 只需要一些反馈,我可以如何实现这一点 我可以获取存储在NGINX的memcache中的这个版本号吗? (这将被用来将其附加到请求uri) 我如何处理login用户? (我可以只为一个login用户设置一个cookie,并检查这个cookie是否存在于nginx中,如果它只是将请求传递给后端而不是memcache)
作为我们服务的一部分,我们正在构build公开可用的API,让用户在我们的平台上执行简单的任务(主要用于自动化目的)(如评论,完成任务和创build新任务)。 API是基于HTTPS的,并且需要使用您的login名和密码以呼叫/login的forms进行授权才能接收令牌(可在您的configuration文件中使其失效)。 如果重要,我们使用金字塔,postgresql和nginx。 这是我的第一个这样的项目,我想知道如何保证这个东西不会吃掉我们所有的传输或处理能力(其中一些API函数非常重)。 我想在一个例子中考虑这个问题,在这个例子中,有人在他的脚本(使用我们的API)中犯了一个小错误,并且会在同一个任务下每秒发表评论(或者列出来自这个任务的所有评论)。 2天。 如果我强制所有通过caching读取(例如,有效的,例如,接下来的10秒),所以它会打我们的memcached服务器,而不是postgres基地 – 这是足以卸载这个问题(所以其他用户不会受到影响)或只是愚蠢? 如果我会检查某种计时器,并等待至less5秒,然后再进行写入(写入之间5秒钟) – 是否会好起来,或者我只是用定时器检查来终止我们的服务器? 我想这更多的是关于消毒公共API的最佳实践的问题,所以它不会咬它的创造者。 你怎么做呢?
我有以下的nginxconfiguration: upstream backend { server localhost:8080; } upstream memcached_server { server 127.0.0.1:11211; } server { listen 3000; server_name localhost; location /picture { set $memc_cmd get; set $memc_key $arg_login; memc_pass memcached_server; error_page 404 = @cache_miss; } location @cache_miss { proxy_pass http://backend; } location /image { proxy_pass http://myimageservice; } 当我发送请求到: localhost:3000/picture?login=john它会尝试使用键“john”在memcached中查找内容。 当memcached中不存在内容时,代理将请求传递给后端服务器(localhost:8080),后者使用John图像的path设置“X-Accel-Redirect”。 path以'/ image'开始,所以nginx从myimageservice获取数据并将其返回给客户端。 问题是我想caching从'myimageservice'返回的响应,所以下一次当localhost:3000/picture?login=john被调用时,没有请求被发送到后端服务器(localhost:8080),响应是立即从memcache返回。 可能吗?
我尝试使用带有此configuration的memcached的nginx: server { … location / { default_type text/html; set $memcached_key $uri; memcached_pass 127.0.0.1:11211; error_page 404 = @fallback; } location @fallback { include uwsgi_params; uwsgi_pass unix:///var/tmp/site.sock; } } 但是,所有的请求都转到了uwsgi而没有使用memcache: nginx -V nginx -V nginx版本:nginx / 1.1.19启用了TLS SNI支持的configuration参数:–prefix = / etc / nginx –conf – path = / etc / nginx / nginx.conf –error-log-path = / […]
我有memcached安装和工作经testing: nc -U /var/run/memcached/memcached.sock stats STAT pid 16360 STAT uptime 2246 STAT time 1412217254 STAT version 1.4.14 (Ubuntu) STAT libevent 2.0.21-stable STAT pointer_size 64 STAT rusage_user 0.032563 //and so on… 我遇到的问题是,当symfony加载并调用session_start()时,会引发一个错误: 致命错误:初始化存储模块失败:/ var / www / project / vendor / symfony / symfony / src / Symfony / Component / HttpFoundation / Session / Storage中的用户(path:/var/run/memcached/memcached.sock)第147行的NativeSessionStorage.php […]
目前,我正在与nginx的cakephp工作。 我使用Fact CGI在运行Nginx的Centos服务器上设置了一个cakephp环境。 问题是,我无法得到重写规则在我的虚拟主机中设置正确,以便蛋糕正确呈现页面,即样式等。 我的.conf文件是as – #The default server server { listen 80 default_server; server_name 1 23.123.123.123; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirect server error pages to the static page /50x.html # error_page 500 […]
对于我的基于Drupal的网站,我有一个三个实例分别运行nginx,postgresql和solr的体系结构。 我想安装Memcached。 我应该把它放在nginx或postgresql服务器上吗? 什么是性能影响?
我想用MemcachedconfigurationNGINX来提供HTML 我发现NGINX下面的Memcached模块: http://wiki.nginx.org/NginxHttpMemcachedModule 但我似乎无法让NGINX通过阅读上面的教程来从Memcached提供我的HTML(例如index.html)文件。 任何人都知道NGINXconfiguration应该是什么打赌它从Memcached提供HTML?
我的Django应用程序中有一个中间件,可将移动客户端redirect到用户可configuration的移动域。 这不是一个简单的m.[current domain] ,因为用户自己定义域。 为了保存查询,我可以存储类似于{'www.example.com': 'mobile-version.example.com'}的映射{'www.example.com': 'mobile-version.example.com'} 。 但是,我想保存wsgi服务器和完整的Django堆栈,以便在移动请求上达成,因为这个简单的逻辑是唯一发生的事情。 我的想法是,如果我可以把这个逻辑放在Nginx中,我可以完全绕过Django,节省一些资源。 这可能吗? 我已经阅读了人们通过memcached服务整个网站的地方(看起来像简单的Varnish使用更便宜的替代品),但方法似乎有点不同。 逻辑会是这样的: $mobile_domain = memcached.get_by_key("mobile_domain_for:" + $current_domain) IF $mobile_domain: redirect $mobile_domain + $path_info + $query_strings
我有一个单一的memcached服务器。 我使用libmemcached C api来连接它。 我正在使用非阻塞模式和没有应答模式(行为标志)。 如果有帮助,我也在nginx C模块中使用libmemcached。 问题是,memcached_mget似乎阻塞,即对于具有大约40ms的延迟的服务器,memcached_mget需要40ms来完成。 这不完全是asynchronous的。 这是我正在使用的代码: const char* localKeys[2] = {"key1", "key2"}; size_t k_length[2] = {4, 4}; gettimeofday(&t1, NULL); ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "no block: %d ", memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NO_BLOCK)); ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "no reply: %d ", memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NOREPLY)); retFt = memcached_mget(memc, localKeys, k_length, 2); gettimeofday(&t2, NULL); ngx_log_debug2(NGX_LOG_DEBUG_HTTP, log, 0, "memcached_mget duration (microseconds): […]