我正在使用docker来容纳大量服务.有时,集装箱化服务大量交换.我已经改变了vm.swappiness对1通过sysctl我的主机系统上.但是,docker的内存cgroup仍然具有旧的(默认)值60.因此,所有特定容器的cgroup具有与父级相同的值.
sysctl vm.swappiness
> vm.swappiness = 1
cat /sys/fs/cgroup/memory/docker/memory.swappiness
> 60
cat /sys/fs/cgroup/memory/docker/${CONTAINER_ID}/memory.swappiness
> 60
Run Code Online (Sandbox Code Playgroud)
所有手动更改swappiness的尝试(通过将所需的值回显到memory.swappiness文件中)都失败了permission denied.
主题:如何限制容器swappiness?
我正在使用ubuntu 12.04内核3.13,我的docker版本是1.1.2本机执行驱动程序(不是lxc)的版本0.2.内核已加载cgroup_enable=memory swapaccount=1.
我正在尝试使用gen_tcp模块.有服务器端代码的例子,我遇到了麻烦.
%% First, I bind server port and wait for peer connection
{ok, Sock} = gen_tcp:listen(7890, [{active, false}]),
{ok, Peer} = gen_tcp:accept(Sock),
%% Here client calls `gen_tcp:close/1` on socket and goes away.
%% After that I am tryin' send some message to client
SendResult = gen_server:send(Peer, <<"HELLO">>),
%% Now I guess that send is failed with {error, closed}, but...
ok = SendResult.
Run Code Online (Sandbox Code Playgroud)
当我gen_tcp:send/2再次打电话时,第二次通话{error, closed}将按预期返回.但我想明白,为什么第一次呼叫成功?我错过了一些特定于tcp的细节吗?这种奇怪的(对我来说)行为仅适用于{active,false}连接.
我有一些像这样的代码:
Table = ets:new(table, [bag]),
true = ets:insert(Table, {bucket_1, some_value_1}),
true = ets:insert(Table, {bucket_1, some_value_2}),
true = ets:insert(Table, {bucket_1, some_value_3}),
LookupResult = ets:lookup(Table, bucket_1),
?_assertEqual(
[{bucket_1, some_value_1}, {bucket_1, some_value_2}, {bucket_1, some_value_3}],
LookupResult
).
Run Code Online (Sandbox Code Playgroud)
ETS是否保证桶内元素的排序?我是否应该期望ETS保存元素的顺序,因为元素已添加到表中?
我有一个带有一些应用程序的erlang节点.我想让我的应用程序从某个集中式服务器(例如hiera server)获取其环境变量.有没有办法从.app文件覆盖环境变量,用从某个地方获得的自定义变量替换它?当然,我不想对我的应用程序代码进行任何更改.