当前位置:首页 > CN2资讯 > 正文内容

linux messag 错误 linux memcached

3天前CN2资讯


memcached

memcached是高性能的分布式缓存服务器
用来集中缓存数据库查询结果,减少数据库访问次数
提高动态web应用的响应速度

传统web架构的问题
许多web应用都将数据保存在RDBMS中,应用从服务器中读取数据
并在浏览器中显示
随着数据量的增大,访问的集中,就会出现RDBMS的负担加重
数据库响应恶化,网站显示延迟等重大影响

数据存储位置对比:
性能
cpu缓存》内存》磁盘》数据库

价格
cpu缓存》内存》磁盘》数据库

memcached支持多平台
linux
freebsd
solaris
mac os x
windows

memcached特征
协议简单,基于libevent的事件处理,内置内存存储方式

内置管理机制:
传统内存分配机制
使用完通过分配的内存后回收内存,这种方式容易产生内存碎片
并降低操作系统对内存的管理效率
slab allocation机制:
他按照预先的大小,将分配的内存分割成特定长度的内存块(chunk)
再把尺寸相同的内存块分成组(chunk集合),这些内存块不会释放,可重复利用
slab allocation的主要术语
分配给slab的内存空间默认是1mb,分配之后根据slab定义的大小切分为chunk
chunks是用于缓存记录的内存空间
slab class是特定大小的chunk组
memcached使用名为least recently used(lru)机制来分配空间
删除 "最近最少使用"的记录的机制
当memcached的内存空间不足时,从最近未被使用的记录中搜索
并将其空间分配给新的记录

——————————————————————————————————————————————————————————————
部署memcached
官方网站:http://memcached.org/

安装事件库libevent

[root@web2 ~]# tar -xf libevent-2.0.21-stable.tar.gz [root@web2 libevent-2.0.21-stable]# ./configure [root@web2 libevent-2.0.21-stable]# make [root@web2 libevent-2.0.21-stable]# make install [root@web2 ~]# echo "/usr/local/lib" > /etc/ld.so.conf.d/libevent.conf(链接库) [root@web2 ~]# ldconfig(刷新链接)

安装memcached

[root@web2 ~]# tar -xf memcached-1.4.24.tar.gz [root@web2 memcached-1.4.24]# ./configure [root@web2 memcached-1.4.24]# make [root@web2 memcached-1.4.24]# make install [root@web2 ~]# /usr/local/bin/memcached -h(查看帮助)

启动memcached

[root@web2 ~]# memcached -u root -m 64M -d


常用选项
-u:Memcache程序运行时使用的用户身份必须是root用户
-p:设置Memcache监听的端口,默认为11211
-l:监听的服务器IP地址
-c:服务的最大连接数
-vvv:超详细信息
-n:chunk size的最小空间是多少,单位为字节
-f:chunk size大小增长的倍数,默认1.25倍
-m:指定使用本机多少物理内存存数据
-d:在后台启动

查看memcached的内部状态

[root@web2 ~]# telnet 127.0.0.1 11211(端口11211) set key 0 200 3(key存了abc,0代表存的时候不压缩 ,200表示存200秒 3表示存三个字符) abc(key的值等于abc) get key(get查询key的值) VALUE key 0 3 abc


ctrl + [键 +]键,然后输入quit退出

memcached常用指令 add name 0 180 10:添加新数据 set name 0 180 10:添加或替换变量 replace name 0 180 10:替换数据 get name:读取变量 append name 0 180 10:向变量中追加数据 delete name:删除变量 stats:查看状态 flush_all:清空所有

实例:

add hydra 0 100 10(添加hydra) 1234567890 STORED get hydra(查询) VALUE hydra 0 10 1234567890 END append hydra 0 100 10(添加) hail hydra STORED get hydra(查询) VALUE hydra 0 20 1234567890hail hydra END

——————————————————————————————————————————————————————————

实验php连接memcached

准备工作

配置nginx

[root@web2 ]# vim /usr/local/nginx/conf/nginx.conf location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000;(遇到动态页面转发到9000端口) fastcgi_index index.php; include fastcgi.conf;(parm改为conf) } [root@web2 ~]# netstat -nutlp | grep 80(查看http服务端口) [root@web2 ~]# netstat -nutlp | grep 9000(查看php端口)

php本身不支持链接memcached,为php添加模块,so库

[root@web2 ]# tar -xf memcache-2.2.5.tgz [root@web2 ]# cd memcache-2.2.5 [root@web2 memcache-2.2.5]# /usr/local/php5/bin/phpize(扫描有没有扩展包) [root@web2 memcache-2.2.5]# ./configure --with-php-config=/usr.local/php5/bin/php-config --enable-memcache [root@web2 memcache-2.2.5]# make [root@web2 memcache-2.2.5]# make install installing shared extensions: /usr.local/php5/lib/php/extensions/no-debug-non-zts-20100525(提示模块存放目录) [root@web2 ~]# vim /usr/local/php5/etc/php.ini [root@web2 ~]# vim /usr/local/php5/etc/php.ini extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/"(添加扩展包路径,700多行) ........... extension_dir = ""(加载模块,800多行) 。。。。。。 [root@web2 ~]# service php-fpm restart(配置后重启)[root@web2 html]# vim hydra.php(测试访问页面) <?php $memcache=new Memcache; $memcache->connect('localhost',11211) or die ('could not connect!!'); $memcache->set('key','test'); $get_values=$memcache->get('key'); echo $get_values; ?> [root@web2 nginx]# firefox http://127.0.0.1/hydra.php(测试访问) [root@web2 ~]# telnet 192.168.2.200 11211(测试) Trying 192.168.2.200... Connected to 192.168.2.200. Escape character is '^]'. get key VALUE key 0 4 test END

——————————————————————————————————————————————————————————————————————

Session共享

session&cookies
session:存储在服务器端,保存用户名,密码等信息
cookies:由服务器下发给客户端,保存在客户端的一个文件里,
保存的内容主要包括sessionID,账户名,过期时间路径和域

测试环境

[root@beiqiang ~]# ifconfig eth0 192.168.4.1 [root@daili nginx~]# ifconfig eth0 192.168.4.5 eth1 192.168.2.5 [root@web tomcat~]# ifconfig eth1 192.168.2.100 [root@web2 tomcat~]# ifconfig eth1 192.168.2.200[root@daili nginx~]nginx做upstream(集群),调度后台两台tomcat服务器 访问192.168.4.5的时候调度后两台web[root@daili nginx]# vim conf/nginx.conf upstream tomcatgrp { server 192.168.2.100:8080;(tomcat服务器ip,端口) server 192.168.2.200:8080; } server { listen 80; server_name localhost; location / { root html; index index.html index.htm; proxy_pass http://tomcatgrp;(调度tomcat) } [root@daili nginx]# nginx -s reloadtomcat不能直接连接memcached,为tomcat加模块 安装Session共享库,把这些架包拷贝到/usr/loacl/tomcat/lib/ asm-5.1.jar memcached-session-manager-tc8-1.9.2.jar minlog-1.3.0.jar msm-kryo-serializer-1.9.2.jar reflectasm-1.11.1.jar kryo-3.0.3.jar spymemcached-2.11.1.jar kryo-serializers-0.34.jar memcached-session-manager-1.9.2.jar 有了这些扩展包才能连接memcached [root@web session]# cp *.jar /usr/local/tomcat/lib/ [root@web2 session]# cp *.jar /usr/local/tomcat/lib/

验证session

编写网页文件 [root@web ~]# vim /usr/local/tomcat/webapps/ROOT/test.jsp(去web2做相同的操作) <html> <body bgcolor="red">(指定背景颜色) <center> <%String s = session.getId();%>|(获取sessionid) <%=s%> <h1>tomcatA </h1>(web2的tomcatA要改为tomcatB) </center> </body> </html> [root@beiqiang ~]# firefox http://192.168.4.5/test.jsp(测试访问) D4B601C82E1FA0C06D859969E4FB3EE5 (生成的sessionid号) tomcatB (web2服务器生成的)[root@web ~]# vim /usr/local/tomcat/conf/context.xml (在web2上做同样的操作) <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"(调类) memcachedNodes="mem1:192.168.2.200:11211"(memcached服务器ip端口) requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>(调类) root@web~]# /usr/local/tomcat/bin/ stop(关闭)在web2上做同样的操作 root@web~]# /usr/local/tomcat/bin/ start(启动)在web2上做同样的操作 [root@beiqiang ~]# firefox http://192.168.4.5/test.jsp

————————————————————————————————————————————————————————————————————



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/25423.html

    分享给朋友:

    “linux messag 错误 linux memcached” 的相关文章

    HostHatch优惠活动揭秘:如何以最低价格获取优质主机服务

    当提到主机服务,HostHatch绝对是个值得信赖的品牌。作为一家成立超过十年的主机商,HostHatch专注于提供高性能的NVMe VPS和大硬盘存储型专用主机。为什么会选择HostHatch呢?除了卓越的服务和强大的基础设施外,吸引人的优惠活动也是一个重要因素。 最近,HostHatch推出了针...

    ZGOVPS优惠码使用指南:如何享受高性能VPS服务的优惠

    ZGOVPS是一家在VPS服务领域备受瞩目的品牌。作为一个提供高性能虚拟专用服务器的商家,它在业内以性价比高、网络稳定和良好口碑而受到广泛欢迎。我在使用ZGOVPS的过程中,深刻感受到了它对客户需求的敏锐把握和优质服务的承诺。 从公司的背景来看,ZGOVPS专注于为全球用户提供专业的VPS解决方案,...

    搬瓦工:新手必备的VPS主机服务与瓦工实践经验分享

    1. 搬瓦工的概述 你好,今天我们来聊聊“搬瓦工”。这个名字可能对很多人来说有些陌生,但实际上它是一个由加拿大IT7 Networks公司推出的VPS主机品牌。简单来说,搬瓦工为用户提供了一种虚拟的服务器租赁服务,尤其适合那些想要搭建网站或学习Linux的新手。最吸引人的是,它的性价比非常高,价格也...

    VPS去程测试:提升网络性能的关键策略与工具

    在当今数字化时代,VPS(虚拟专用服务器)为各类用户提供了极大的灵活性和控制力。为了确保这种服务能够表现出色,VPS去程测试成为了一个重要的话题。简单来说,去程测试是指从我本地设备到VPS服务器的数据传输路径的检查。这种测试能够帮助我了解数据包在传输过程中的表现,包括延迟和可能的瓶颈。 去程测试的重...

    全面掌握路由测试:提升网络性能的关键技术与工具

    路由测试的定义 路由测试,简单来说,就是对网络路由器性能和功能进行的一系列评估和验证。它帮助我们了解网络设备如何处理数据包,从而保证信息在传输过程中的安全和高效。这项测试通常涉及到监测路由器的各种指标,比如数据包的转发速度、延迟和网络稳定性,以确保设备符合预期的性能标准。 当我第一次接触路由测试时,...

    LOC论坛注册流程与用户参与指南

    在使用LOC论坛之前,首先需要了解注册流程。这是加入我们社区的第一步,同时也是体验一系列资源和活动的通行证。整个注册过程相对简单明了,我会在这里做一个详细的解读,确保每个人都能顺利完成注册。 在LOC论坛的首页,找到“注册”按钮。点击后,会出现一个填写信息的页面。通常,你需要提供电邮地址、用户名以及...