记录学习过程中的点点滴滴
memcached
libmemcached的retry_timeout问题分析
三 26th
最近在线上中遇到使用libmemcached的svr连接memcached间隔性的出现47错误,每次在2s的时间内大量出现,
其宏定义为MEMCACHED_SERVER_TEMPORARILY_DISABLED,表示memcached临时性不可用.
- 当某个时刻,某台memcached机器出现连接超时情况时,会将server的状态标识为MEMCACHED_SERVER_STATE_IN_TIMEOUT
- 在接下来的retry_timeout(默认为2s)的时间内,libmemcached将不会重新连接该memcached,总是直接返回47错误码,表示服务临时不可用
我们遇到的情况就是当某个时刻网络抖动(这个在跨机房通信应该比较常见),可能会是在ms级的,但是libmemcached会直接将该server不可用,并且在2s内不再重试。这里就是所谓的“快隔离、慢恢复”的理念,会在2s内导致该memcached不可用,出现大量47错误的原因。
可以通过MEMCACHED_BEHAVIOR_RETRY_TIMEOUT将retry_timeout设置为1s来减少网络抖动的影响,但是不能设置为0,最少是1s.
应用 memcached 提升站点性能[转载]
九 27th
memcached 常被用来加速应用程序的处理,在这里,我们将着重于介绍将它部署于应用程序和环境中的最佳实践。这包括应该存储或不应存储哪些、如何处理数据的灵活分布以 及如何调节用来更新 memcached 和所存储数据的方法。我们还将介绍对高可用性的解决方案的支持,比如 IBM WebSphere® eXtreme Scale。
所有的应用程序,特别是很多 web 应用程序都需要优化它们访问客户机和将信息返回至客户机的速度。可是,通常,返回的都是相同的信息。从数据源(数据库或文件系统)加载数据十分低效,若是 每次想要访问该信息时都运行相同的查询,就尤显低效。
虽然很多 web 服务器都可被配置成使用缓存发回信息,但那与大多数应用程序的动态特性无法相适。而这正是 memcached 的用武之地。它提供了一个通用的内存存储器,可保存任何东西,包括本地语言的对象,这就让您可以存储各种各样的信息并可以从诸多的应用程序和环境访问这些 信息。
近期评论