Memcached-1.4.4启动参数——手动设置chunk大小的上限

最近在看memcached的源代码,源码包是memcached-1.4.22,一开始看memcached.c的main函数的时候发现了和1.2.8的不同之处。

可能在1.4.22版本之前就已经添加了这些功能,只是我是直接从1.2.8跳到1.4.22的,所以才会以为是新添加的。

这个不同之处就是可以在启动的时候手动修改chunk大小的上限。具体见下面代码:

        case 'I':
            buf = strdup(optarg);
            unit = buf[strlen(buf)-1];
            if (unit == 'k' || unit == 'm' ||
                unit == 'K' || unit == 'M') {
                buf[strlen(buf)-1] = '\0';
                size_max = atoi(buf);
                if (unit == 'k' || unit == 'K')
                    size_max *= 1024;
                if (unit == 'm' || unit == 'M')
                    size_max *= 1024 * 1024;
                settings.item_size_max = size_max;
            } else {
                settings.item_size_max = atoi(buf);
            }
            if (settings.item_size_max < 1024) {
                fprintf(stderr, "Item max size cannot be less than 1024 bytes.\n");
                return 1;
            }
            if (settings.item_size_max > 1024 * 1024 * 128) {
                fprintf(stderr, "Cannot set item size limit higher than 128 mb.\n");
                return 1;
            }
            if (settings.item_size_max > 1024 * 1024) {
                fprintf(stderr, "WARNING: Setting item max size above 1MB is not"
                    " recommended!\n"
                    " Raising this limit increases the minimum memory requirements\n"
                    " and will decrease your memory efficiency.\n"
                );
            }

从代码可以看出,这里需要使用参数 -I 来带入这个参数。

这个参数后面指定的数据格式是有限制的:纯数字、单位为m(或M)、单位为k(或K)。

只能是这些格式的,其他的不能用,例如:

我想带入的参数是2M,那么可以写成

-I 2m 或 -I 2M  ,

-I 2048k 或 -I 2048K  ,

或者直接写 2097152或2097152b或2097152B

不能使用其他单位的数据,比如g(或G)

任何非b、k、m的单位都会被理解为b

当你指定的数值大小超过1M的话会收到一条警告,告诉你这个大小是不被推荐的,但是设置依然会生效。

查看设置是否生效,可以使用命令:stats settings,显示的最后一条“STAT item_size_max 2097152”就是生效的值。

转载于:https://www.cnblogs.com/lrxing/p/4277118.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值