Golang 笔记:临时对象池sync.Pool
📅 2015-02-03
sync.Pool可以被看做是存放可被重用的值的容器,这个容器具有以下特性:可自动伸缩、高效、并发安全。
因为它的使用场景并不适用于诸如数据库连接池
这类需要我们自己管理生命周期的资源对象的池化场景,所以一般把sync.Pool
称为临时对象池(其实叫做临时对象缓存更合适),主要用来存放已经分配的但是暂时不需要使用的对象,在需要使用的时候再从临时对象池中取出。
sync.Pool可以被看做是存放可被重用的值的容器,这个容器具有以下特性:可自动伸缩、高效、并发安全。
因为它的使用场景并不适用于诸如数据库连接池
这类需要我们自己管理生命周期的资源对象的池化场景,所以一般把sync.Pool
称为临时对象池(其实叫做临时对象缓存更合适),主要用来存放已经分配的但是暂时不需要使用的对象,在需要使用的时候再从临时对象池中取出。
使用lua-nginx-module可以把lua嵌入到nginx中,使用lua在nginx下开发一定的业务逻辑。
首先编译安装LuaJIT。
LuaJIT使用JIT编译技术可以把Lua脚本直接编译成机器代码由CPU执行。
从这里下载LuaJIT的源码。解压缩后进入源码目录:
1make install PREFIX=/usr/local/luajit
接下来下载ngx_devel_kit
和lua-nginx-module
的源码。
kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 kingshard的性能是直连MySQL性能的80%以上。
...Keepalived实现了一套VRRP协议(虚拟路由协议),这个协议允许服务器可以动态的设置IP路由。 使用Keepalived可以加强负载均衡软件的可用性。
1192.168.61.3 ha1 - MASTER
2192.168.61.4 ha2 - BACKUP
1yum -y install openssl-devel
2
3wget http://www.keepalived.org/software/keepalived-<version>.tar.gz
4tar -zxvf keepalived-<version>.tar.gz
5cd keepalived-<version>
6./configure --prefix=/usr/local/keepalived
7
8make
9make install
安装psmisc,可使用 killall -0 haproxy
检查haproxy实例是否存活,性能高于ps。
CSP(CommunicatingSequentialProcess)中文翻译"通信顺序进程"或"交换信息的循序进程", CSP描述了一种并发系统进行交互的模式。 CSP允许使用进程组件来描述系统,这些进程组件独立运行并且通过消息传递的方式通信。
...Haproxy是一款支持4层和7层应用的高性能负载均衡器。 使用Haproxy可以实现基于TCP和Http应用代理的解决方案。
1wget http://www.haproxy.org/download/1.7/src/haproxy-<version>.tar.gz
2tar -zxvf haproxy-<version>.tar.gz
3cd haproxy-<version>
4make TARGET=linux2628 ARCH=x86_64
5make install PREFIX=/usr/local/haproxy
查看make install
的输出如果没有安装haproxy-systemd-wrapper的话,从源码路径下将其手动拷贝到/usr/local/haproxy/sbin下。
下载源码:
1wget http://nginx.org/download/nginx-<version>.tar.gz
2tar -zxvf nginx-1.10.3.tar.gz
3cd nginx-<version>
准备构建环境compiler,OpenSSL,PCRE(Perl Compatible Regular Expressions):
1yum install -y gcc
2yum install -y pcre-devel
3yum install -y openssl openssl-devel
编译安装:
1./configure \
2 --with-http_ssl_module \
3 --with-http_realip_module \
4 --user=www \
5 --group=www
6make
7make install
默认按在/usr/local/nginx目录下,可以使用configure参数--prefix
定制安装目录,
其他configure参数参考这里。
执行sbin/nginx -V
可以打印安装时的编译参数。
jps即JVM Process Status Tool,显示系统上所有的HotSpot虚拟机进程。
1jps -lmv
217015 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/home/tomcat/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms2048m -Xmx2048m -Xmn400m -XX:PermSize=512m -XX:ReservedCodeCacheSize=48M -XX:+UseConcMarkSweepGC -Djava.endorsed.dirs=/home/tomcat/tomcat/endorsed -Dcatalina.base=/home/tomcat/tomcat -Dcatalina.home=/home/tomcat/tomcat -Djava.io.tmpdir=/home/tomcat/tomcat/temp
使用jps就可以获取到JVM进程的id,查看已经配置的JVM参数便于使用后边工具进一步分析。
...Linux的例行任务包含两种:一种是需要周期执行的任务其命令为cron;另外一种是在某个特定时间执行一次的任务,其命令为at。
当前时间后多长时间执行一次任务:
1# at now + 3 minutes
2at> echo hello > hello.txt
3at> <EOT>
4job 1 at Mon Dec 22 18:29:00 2014
...
<EOT>
是输入组合键CTL+D
一般使用mii-tool可以设置以太网设备,使用它还可以显示当前的设置信息。
1mii-tool -v em1
2em1: negotiated 1000baseT-FD flow-control, link ok
3 product info: vendor 00:d8:97, model 54 rev 0
4 basic mode: autonegotiation enabled
5 basic status: autonegotiation complete, link ok
6 capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
7 advertising: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
8 link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
ethtool与mii-tool类似,可以提供更多的配置选线和设备统计信息显示。
...