当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪Apache 内容动态缓冲模块 mod_cache应用       mod_cache是apache中基于URI键的内容动态缓冲(内存或磁盘) 从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的.........
    ▪Nginx+Lua+Redis构建高并发Web应用       本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。 一、安装1、安装lua-redis-parser 代码如下:#git clone https://github.com/agentzh/lua-redis-parser.git #expor.........
    ▪CentOS6.2网卡设置       下面主要介绍在CentOS6.2下使用系统自带的bonding进行网卡绑定的详细步骤。 注意:请在配置前关闭NetworkManager服务[root@h63 ~]# service NetworkManager status && service NetworkManager start网卡绑定一次.........

[1]Apache 内容动态缓冲模块 mod_cache应用
    来源: 互联网  发布时间: 2013-12-24
mod_cache是apache中基于URI键的内容动态缓冲(内存或磁盘)


从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的途径来加速原始web服务器(origin webserver)和代理服务器(proxy)的HTTP处理速度。
mod_cache以及它的支持模块mod_mem_cache和mod_disk_cache提供了智能的HTTP缓冲。内容(content)本身被存储在缓冲区中,mod_cache的目的在于管理控制内容缓冲能力的各种HTTP头和选项。它可以同时处理本地的内容和代理的内容。mod_cache被设计为同时针对简单的和复杂的缓冲配置,以用于处理代理的内容、动态的本地内容、必须加速访问的随时间而改变本地文件。
另一方面,mod_file_cache实现了一个更基本的、但是在某些情况下更有效的缓冲形式,它避免了主动确保URL缓冲能力所需的维护复杂性,mod_file_cache通过提供文件句柄(file-handle)和内存映射(memory-mapping)的技巧来维持一个自Apache最后一次启动以来的文件缓冲区。同样地,mod_file_cache的目标是改善不常修改的本地静态文件的访问时间。
由于mod_file_cache提供了一个相对简单的缓冲实现,除了CacheFile和MMapStatic文档的特定段落之外,这篇指南的说明覆盖了mod_cache的缓存体系结构。

安装编译 
为了能够在apache使用cache ,需要在安装编译时加上如下参数。
--enable-cache  --enable-disk-cache --enable-mem-cache  --enable-file-cache

代码如下:

[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so  --enable-cache  --enable-disk-cache --enable-mem-cache  --enable-file-cache

[root@localhost httpd-2.4.1]# make
[root@localhost httpd-2.4.1]# make install


两种缓存模式:
1、mod_disk_cache
一个基于磁盘的存储管理模块。
2、mod_mem_cache
一个基于内存的存储管理模块。mod_mem_cache可以被配置为两种不同的操作模式:①缓存打开的文件描述符;②在堆(heap)上缓存对象。mod_mem_cache既可以用于缓存本地生成的内容,也可以用于为反向代理模式下的mod_proxy缓存后端服务器输出的内容。

基于硬盘文件的缓存 
基于硬盘文件存储的缓存由mod_disk_cache 模块实现:

代码如下:

<IfModule mod_cache.c>
CacheDefaultExpire  3600
CacheMaxExpire  86400
CacheLastModifiedFactor  0.1

<IfModule mod_disk_cache.c>
CacheRoot  /usr/local/apache/cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheMaxFileSize  10000000
CacheMinFileSize  1
</IfModule>

</IfModule>


拷贝上面内容到apache 的 httpd.con文件中:在httpd.conf文件中搜索
#LoadModule cache_module modules/mod_cache.so  // 去掉前面的# 号
使用磁盘文件缓存:
#LoadModule disk_cache_module modules/mod_disk_cache.so  // 去掉前面的# 号
参数详细含义如下:
CacheDefaultExpire:
  设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheMaxExpire:
  失效周期的最大值,缓存实体的默认失效周期是一个小时(3600秒) ,这个默认值仅仅用在产生内容的原始资源没有明确指定失效时间或最后修改时间的情况下。
CacheLastModifiedFactor:
  在事件的文件中不提供到期时间,指令指定的一个因素是用于生成截止日期。例如,如果该文件的最后修改10小时前, 系数为0.1,那么到期期间将设置为10 * 0.1 = 1小时,如果当前时间是下午3:00,然后计算到期时间为3:00+1小时,也就是下午4:00  ,如果到期时间大于CacheMaxExpire 的时间,那么后者优先级高。
CacheRoot:
  缓存文件所在的目录,运行 Apache 的用户(如daemon 或 nobody)要能对其进行读写,如果不清楚的话可以直接设置成 777,请手动建立该目录并设置好访问权限
CacheEnable:
  启用缓存,第1个参数是缓存类弄,这里当然是 disk了,第2个参数是缓存路径,指的是 url 路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存 /docs 下的所有文件
CacheDirLevels:
  缓存目录的深度,默认是3,这里设置为5
CacheDirLength:
  缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize 和 CacheMaxFileSize:
  缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为 1M 和 10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启 Apache 应该就能使用了。一切正常的话,可以在缓存目录下看到 Apache 自动建立的一些目录和缓存的数据文件。

基于内存的缓存
基于内存的缓存主要由 mod_mem_cache 模块实现:

代码如下:

<IfModule mod_cache.c>

<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount  2000
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>

</IfModule>


安装完成之后,需要搜索
LoadModule cache_module modules/mod_cache.so  // 去掉前面的# 号
使用内存文件缓存:
#LoadModule mem_cache_module modules/mod_mem_cache.so  // 去掉前面的# 号
参数详细含义如下:
CacheEnable:
  启用缓存,使用基于内存的方式存储
MCacheSize:
  缓存数据最多能使用的内存,单位是 kb,默认是100kb,这里设置为128M
MCacheMaxObjectCount:
  在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMinObjectSize:
     单个缓存对象最小为10bytes,默认为1bytes
MCacheMaxObjectSize:
  单个缓存对象最大为 1M,默认是10000bytes
保存重启 Apache 基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。

    
[2]Nginx+Lua+Redis构建高并发Web应用
    来源: 互联网  发布时间: 2013-12-24

本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。

一、安装
1、安装lua-redis-parser

代码如下:

#git clone https://github.com/agentzh/lua-redis-parser.git
 #export LUA_INCLUDE_DIR=/usr/include/lua5.1
 #make CC=gcc
 #make install CC=gcc

2、安装json
代码如下:

#wget http://files.luaforge.net/releases/json/json/0.9.50/json4lua-0.9.50.zip
#unzip json4lua-0.9.50.zip
 #cp json4lua-0.9.50/json/json.lua /usr/share/lua/5.1/

3、安装redis-lua
代码如下:

#git clone https://github.com/nrk/redis-lua.git
 #cp redis-lua/src/redis.lua /usr/share/lua/5.1/

二、配置

代码如下:

        #vi /etc/nginx/nginx.conf
        http {
            include mime.types;
            default_type application/octet-stream;
            access_log logs/access.log;
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 60;
            types_hash_max_size 2048;
            server_tokens off;
            lua_code_cache on;

            upstream redis_pool {
                server 192.168.1.105:6379;
                keepalive 1024 single;
                //定义连接池大小,当连接数达到此数后,后续的连接为短连接
            }

            server {
                listen 80;
                server_name 192.168.1.104;

                location /get_redis{
                    #internal;
                    set_unescape_uri $key $arg_key;
                    redis2_query hgetall $key;
                    redis2_pass redis_pool;
                }

                location /json {
                    content_by_lua_file conf/test_redis.lua;
                }
            }
        }

三、测试
1、编写脚本
        编写上面配置中的test_redis.lua脚本

代码如下:

        #vi test_redis.lua
        local json = require("json")
        local parser = require("redis.parser")
        local res = ngx.location.capture("/get_redis",{args = { key = ngx.var.arg_key }})
        if res.status == 200 then
            reply = parser.parse_reply(res.body)
            value = json.encode(reply)
            ngx.say(value)
            a = json.decode(value)
            ngx.say(a[2])
        end

2、构造数据
代码如下:

        #redis-cli -h 192.168.1.105 -p 6379
        redis 192.168.1.105:6379>HMSET testnlr www www.joyvc.cn mail mail.joyvc.cn

3、开始测试
代码如下:

        #curl 'http://192.168.1.104/json?key=testnlr'
        ["www", "www.joyvc.cn", "mail", "mail.joyvc.cn"]

    
[3]CentOS6.2网卡设置
    来源: 互联网  发布时间: 2013-12-24

下面主要介绍在CentOS6.2下使用系统自带的bonding进行网卡绑定的详细步骤。

注意:请在配置前关闭NetworkManager服务
[root@h63 ~]# service NetworkManager status && service NetworkManager start
网卡绑定一次可以绑定多个网卡,你可以使用ifconfig -a查看你的网卡信息,例如:
[root@h63 ~]# ifconfig -a

em1       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:03
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:48236002 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16156472 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4838973371 (4.5 GiB)  TX bytes:1301118550 (1.2 GiB)
          Interrupt:36 Memory:d6000000-d6012800

em2       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:05
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:42385720 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7283526 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4307780986 (4.0 GiB)  TX bytes:466840625 (445.2 MiB)
          Interrupt:48 Memory:d8000000-d8012800

em3       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:07
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:32 Memory:da000000-da012800

em4       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:09 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:42 Memory:dc000000-dc012800


这里有4个网卡,分别是em1、em2、em3和em4,我们把em1和em2做一个绑定,绑定模式为6(关于网卡绑定模式的介绍请看Linux网卡绑定探析),首先我给给网卡绑定后的设备起个名字bond0(名称可以自定义),并创建:
[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0        #设备名称
BOOTPROTO=static      #静态IP
ONBOOT=yes          #自动启动
IPADDR=172.16.16.63    #设备绑定的IP
GATEWAY=172.16.23.254       #设备绑定的网关
NETMASK=255.255.248.0    #设备绑定的掩码
TYPE=Ethernet         #设备绑定的类型

编辑需要绑定的网卡:
[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em1

DEVICE=em1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0  #绑定后的设备名称
SLAVE=yes
TYPE=Ethernet

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em2

DEVICE=em2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0  #绑定后的设备名称
SLAVE=yes
TYPE=Ethernet
说明:配置网卡时不要填写IP地址和MAC地址

配置加载模式设置:
[root@h63 ~]# vim /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=100 mode=6

说明:mode是网卡绑定的模式,此处是模式6

也可以在/etc/modprobe.d/下创建一个文件:
[root@h63 ~]# vim /etc/modprobe.d/bond

alias bond0 bonding
options bond0 miimon=100 mode=6

绑定配置完成,重启网络服务
[root@h63 ~]#service network restart

查看网卡绑定的情况:

[root@h63 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: em1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 78:2b:cb:30:08:03
Slave queue ID: 0


Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 78:2b:cb:30:08:05
Slave queue ID: 0

至此,网卡绑定就完成了。有不对的地方,还请指教。


 


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3