已更新,请参阅冗长(抱歉)问题的底部。
查看我们的 memcached 统计数据,我想我发现了一个我以前不知道的问题。似乎我们有大量浪费的空间。我检查了phpmemcacheadmin是否有变化,发现这张图片正盯着我看:
现在我的印象是,最坏的情况是有 50% 的浪费,尽管我是第一个承认不了解所有细节的人。我已经阅读了 - 除其他外 -这个页面确实有点旧,但我们的 memcached 版本也是如此。我想我确实了解系统是如何工作的(例如)我相信,但我很难理解我们如何才能达到 76% 的空间浪费。
phpmemcacheadmin 显示的驱逐率是2 ev/s
,所以这里有一些问题。
主要问题是:我能做些什么来解决这个问题。我可以投入更多内存(我认为有一些额外的可用空间),也许我应该摆弄平板配置(这个版本甚至可能吗?),也许还有其他选择?升级 memcached 版本不是一个快速可用的选项。
出于好奇,第二个问题当然是 75%(和上升)的空间浪费率是否是预期的,如果是,为什么。
系统:目前我对此无能为力,我知道memcached版本不是最新的,但这些是我处理过的牌。
作为对@DavidSchwartz 的回答的回应:这里是 phpmemcacheadmin 生成的平板统计信息:(顺便说一句,还有更多的平板)
更新
我用 -f 1.5 重新启动了守护进程,它看起来非常好。经过一些变暖,我们使用/浪费了 50 / 50 。但是,和以前一样,我们一天中的时间越长(白天变得更忙),它就会开始回落到目前的水平:30 / 70,并且浪费仍在增加。除此之外,我仍然不知道“浪费”从何而来。我看到这个板块:
**Slab 5 Stats**
Chunk Size 496.0 Bytes
Used Chunk 77502 [24.6 %]
Total Chunk 314986
Total Page 149
Wasted 117.3 MBytes
Hits 30.9 …
Run Code Online (Sandbox Code Playgroud) 自从我们从一个简单的 Apache 实例转向负载平衡环境以来,有时会出现 POST 请求重复的问题。我们正在运行 nginx 作为反向代理。静态内容由 nginx 本身提供,动态内容由两个 Apache 后端提供。
我已经检查过这不是接口/用户错误。一个小例子:简单的图片上传会导致图片上传两次。请求/POST 不会通过双击或用户失败发送两次。我没有发现任何证据表明浏览器发送了两次请求,所以我怀疑是在服务器端。(请注意,这只是怀疑。)大多数这些请求是内部的,这意味着它们来自员工,因此我可以验证它们是如何产生的。
我能找到的唯一“错误”是 nginx499
在这些情况下会记录错误。但是,我不确定这是问题的原因还是只是问题的(副作用)。(我知道 499 不是默认的 http 状态,它是 nginx 状态,意思是“客户端已关闭连接”)
重复的 POST 请求几乎是所有可能需要一段时间的请求。我在这里作为示例展示的是一个简单的图像上传,但脚本在后台执行一些操作(图像必须转换为不同的格式/大小,并且应该分发到两个服务器等)。
一个例子是上传图片。nginx 将记录一个“499”和一个 200 请求,但 Apache 正在接收(并处理!)两个请求。
阿帕奇
[17:17:37 +0200] "POST ***URL** HTTP/1. 0" 200 9045
[17:17:47 +0200] "POST ***URL** HTTP/1. 0" 200 20687
Run Code Online (Sandbox Code Playgroud)
nginx
[17:17:47 +0200] "POST ***URL** HTTP/1.1" 499 0
[17:17:52 +0200] "POST ***URL** HTTP/1.1" 200 5641
Run Code Online (Sandbox Code Playgroud)
在我看来,更大/更慢的上传受到更多影响,所以我怀疑超时。我试图阅读 499 错误:结论似乎是“客户端关闭连接”。这可能是后台的情况,但我不确定这将如何意味着应该发出第二个请求,并且肯定不会发生“用户关闭浏览器”之类的事情。
目前,它似乎有助于分解较慢的 POST 请求(如果有多个事情要做,只需让用户选择 1 并为另一个选择第二次 POST),但这可能只是降低了它发生的机会。没有把握。
这显然是一个临时解决方案。如果是超时,我需要找出在哪里并增加相应的数字,但我不确定为什么超时会导致这种行为:我怀疑是“好吧,出错了”消息,而不是重复。 …
目标:连接到Exchange服务器(EWS)
方法:卷曲
的问题:无法获得认证(NTLM),请求返回401 1
似乎有一个古老的、有据可查的2问题始于 cURL 从 OpenSSL 到 NSS 的转移。我读到 NTLM 的实现依赖于 OpenSSL,因此这一举动破坏了 NTLM 身份验证。
问题如下所示,但重要的部分似乎是返回的401
和gss_init_sec_context()
下面的部分。
我不明白的是我当前的版本:
libcurl/7.22.0 OpenSSL
)我不确定如何解决这个问题。我可以找到很多关于这个问题的旧(主要是 2010 年)参考,但没有什么新的,当然也没有解决方案。我知道提供的参考资料(参见2)表明这可能适用于旧版本(7.19),但我无法(也不愿意)降级到该版本。
交换通信 (EWS) 的几个实现使用 cURL 来检索 EWS 文件(wsdl 等),所以我确信必须有一种工作方法,但我找不到它。有谁知道我能做什么?我是否有另一个错误,我是否对事实的解释有误,这是否仍然与链接中提供的情况相同并且永远不会修复?
1错误是这样的:
curl https://*DOMAIN*/Exchange.asmx -w %{http_code} --ntlm -u *USERNAME* --verbose --show-error
Enter host password for user '*USERNAME':
* About to connect() to DOMAIN port …
Run Code Online (Sandbox Code Playgroud) .vib
我正在尝试在 ESXi 服务器上安装。这个特定的需要“社区”的接受程度。我尝试将合作伙伴到社区的级别设置如下:
# esxcli software acceptance set --level=CommunitySupported
Run Code Online (Sandbox Code Playgroud)
结果是:
[AcceptanceConfigError]
由于虚拟安装的 VIBGhetto_bootbank_ghettoVCB_1.0.0-0.0.0 的接受级别较低,因此无法设置社区的接受级别。
请参阅日志文件了解更多详细信息。
如果我列出已安装的软件,则该特定文件将列出为:
ghettoVCB 1.0.0-0.0.0 virtuallyGhetto CommunitySupported 2015-10-27
Run Code Online (Sandbox Code Playgroud)
这确实意味着我尝试设置的级别不低于它需要的级别?进一步挖掘,似乎这是通过在安装命令中添加 -f 来安装的。
如何降低这台机器的接受程度?是否有官方方法,或者至少有一个已知问题,其中有一些软件需要比当前实际设置更低的设置?
有趣的是,据我所知,CommunitySupported 是最低级别,所以我不能将其设置得更低:我的猜测是它低于当前设置会导致出现问题吗?
软件运行情况为:
VMware ESXi 5.5.0 内部版本 2068190
VMware ESXi 5.5.0 更新 2
因为在这个服务器上我什至不需要那个“ghettoVCB”,所以我只是卸载了它;此后降低接受度效果非常好。 但这显然是一种解决方法,并不适用于所有情况,所以我对真正的解决方案感兴趣//我应该做什么。