我们运行的是ElastiCache2.9,并使用CakePHP集群进行会话存储(通过Memcached存储)。
我们已经按照这里的建议禁用了PHP的内置会话垃圾收集:https://tideways.io/profiler/blog/php-session-garbage-collection-the-unknown-performance-bottleneck
session.gc_probability = 0
我们还在CakePHP的缓存配置中将probability
设置为0。
然而,正如New Relic所报道的那样,我们仍然有一些问题,偶尔我们会遇到CakeSession::_startSession中的主要减速问题:
Elasticache集群没有显示任何指标,这表明存在问题(除非有某些指标我不能正确理解)。
对如何诊断这个原因有什么建议吗?
发布于 2017-03-17 19:52:50
您需要以解耦的方式进行调试,以找出是哪一层导致了问题。
它可以是Cake、AWS基础设施、网络延迟...
运行这个小PHP脚本,并告诉我们所用的时间。
// memcache
$m = microtime( true );
$memcache_obj = new Memcache;
$memcache_obj->connect('myhost.cache.amazonaws.com', 11211);
printf('%.5f', microtime( true ) - $m) ;
// memcached.
$time = microtime( true );
$m = new Memcached();
$m->addServer('<elasticache node endpoint>', 11211);
$m->set('foo', 100);
var_dump($m->get('foo'));
printf('%.5f', microtime( true ) - $time) ;
如果时间合适,问题就是蛋糕。
然而,老实说,我相当确定问题出在ElastiCache集群上。
试着指向一个节点的端点,而不是ElastiCache集群的端点,让我知道它是如何进行的。
发布于 2020-01-02 21:51:10
我们也有类似的问题,在将会话移动到亚马逊网络服务的Memcached (EC2和Elasticache/Memcached)后,网站变得很慢。以下更改修复了该问题。
php.ini - session.lazy_write = Off
memcached.ini - memcached.sess_locking = Off
现在,网站运行良好,速度符合预期。
但我想知道关闭这些设置是否有任何负面影响?
https://stackoverflow.com/questions/42334448
复制相似问题