在服务端的开发中,经常会有这种需求:不重启进程的状态下,更新数据。
一般常见的解决思路是:
(1) 全量加载其初始版本v1到内存中
(2) 设置更新接口update,当更新到来时,通过这个接口在内存中更新,并定时刷新到本地磁盘中(由于磁盘io较慢,一般不可能每次更新都及时回写磁盘)。
这种做法的好处是实现思路比较简单直观,但也存在一些缺点:
(1) update时存在资源的竞争,例如需要mutex lock,若更新频繁的话,对性能存在较大影响。
(2) 若进程crash,[......]
在服务端的开发中,经常会有这种需求:不重启进程的状态下,更新数据。
一般常见的解决思路是:
(1) 全量加载其初始版本v1到内存中
(2) 设置更新接口update,当更新到来时,通过这个接口在内存中更新,并定时刷新到本地磁盘中(由于磁盘io较慢,一般不可能每次更新都及时回写磁盘)。
这种做法的好处是实现思路比较简单直观,但也存在一些缺点:
(1) update时存在资源的竞争,例如需要mutex lock,若更新频繁的话,对性能存在较大影响。
(2) 若进程crash,[......]
命令为:
sudo netstat -lnp
截取某一行,如下所示:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1137/mysqld
其中,3306就是本地server打开的端口号,1137是进程pid。[......]
cat test.txt | tr '\n' ','
[......]
https://unix4lyfe.org/darkhttpd/
特点:单进程命令行即可启动,无需配置。
darkhttpd/1.10, copyright (c) 2003-2014 Emil Mikulic.
usage: ./darkhttpd /path/to/wwwroot [flags]
flags: --port number (default: 8080, or 80 if running as root)
Specifies[......]
转载自:memcached源码阅读----使用libevent和多线程模型
本篇文章主要是我今天阅读memcached源码关于进程启动,在网络这块做了哪些事情。
一、libevent的使用
首先我们知道,memcached是使用了iblievet作为网络框架的,而iblievet又是单线程模型的基于linux下epoll事件的异步模型。因此,其基本的思想就是 对可读,可写,超时,出错等事件进行绑定函数,等有其事件发生,对其绑定函数回调。
可以简单了解一下 libevent基本[......]