缓存服务器

mysql 监控及优化——转载自http://www.cnblogs.com/suansuan/

自作多情 提交于 2019-12-06 09:59:05
1、Mysql连接数   Mysql默认最大连接数为100。   设置Mysql的最大连接数,在Mysql的配置文件中增加:   max_connections = 1000               #Mysql的最大连接数,默认如果不写的话是100个   wait_timeout = 10               #超时时间   配置文件路径:    (/etc/my.cnf 系统自带) (/opt/lampp/etc/my.cnf 安装Mysql 路径)   查看当前有多少个连接   show status like '%Threads_connected%';  #查看当前连接数   show processlist;            #也可查看锁表 2、Mysql缓存   Query Cache缓存的是sql语句对应的结果集,InnoDB_Buffer_Pool中缓存的是表中的数据。Buffer_Pool是设置的越大越好,一般设置为服务器物理内存的70%。   缓存1(MySQL层):查询缓存 Query Cache     ①.查询表里的数据有变化,之前的缓存失效。     ②.查询语句必须一模一样,才能用查询缓存;只要字符大小写或者注释等有一点点不同,都不可以用查询缓存。     ③.任何一个包含不确定的函数(比如now(),current_date()

8.4.1 使用Redis来缓存查找

走远了吗. 提交于 2019-12-06 09:58:12
现在先从设置许可证服务以使用Redis开始。幸运的是,Spring Data已经简化了将Redis引入许可证服务中的工作。要在许可证服务中使用Redis,需要做以下4件事情。 (1)配置许可证服务以包含Spring Data Redis依赖项。 (2)构造一个到Redis服务器的数据库连接。 (3)定义Spring Data Redis存储库,代码将使用它与一个Redis散列进行交互。 (4)使用Redis和许可证服务来存储和读取组织数据。 1.配置许可证服务以包含Spring Data Redis依赖项 需要做的第一件事就是将spring-data-redis、jedis以及common-pools2依赖项包含在许可证服务的pom.xml文件中。代码清单8-7展示了要包含的依赖项。 代码清单8-7 添加Spring Redis依赖项 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.4.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId>

PHP cookie和session的分析

旧时模样 提交于 2019-12-06 09:55:40
PHP 的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP 在 http 协议的头信息里发送 cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。 1.1 设置 cookie : 可以用 setcookie() 或 setrawcookie() 函数来设置 cookie 。也可以通过向客户端直接发送 http 头来设置 . 1.1.1 使用 setcookie() 函数 设置cookie: bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] ) name: cookie 变量名 value: cookie 变量的值 expire: 有效期结束的时间 , path: 有效目录 , domain: 有效域名 , 顶级域唯一 secure: 如果值为 1, 则 cookie 只能在 https 连接上有效 , 如果为默认值 0, 则 http 和 https 都可以 . 例子 : < ? php $ value = 'something from somewhere

http缓存策略

做~自己de王妃 提交于 2019-12-06 09:35:45
http缓存策略 url输入后 首次访问 或 已清除缓存 时,(浏览器无缓存数据),(向服务器请求资源), 服务器在返回(资源)和(缓存策略) ,http状态码为200;客户端拿到后将数据和缓存策略缓存到浏览器。 缓存策略 存在于响应头里 , 缓存策略主要有: 强制缓存 和 协商(对比)缓存 , 缓存策略 缓存到浏览器 或者 强制缓存 服务器响应头会有2个字段来表示,expires/cache-control。 expires   http1.0的字段 , 现在浏览器默认使用http1.1 ,http1.1后使用 cache-control代替 是一个时间戳,代表资源过期时间。 例如:Expires:Sat, 23 May 2009 10:02:12 GMT cache-control (请求和响应都可以带cache-control ) Request Cache-Control "no-cache" "no-store" "max-age" "=" delta-seconds "max-stale" "=" delta-seconds "min-fresh" "=" delta-seconds "no-transform" "only-if-cached" Response Cache-Control "public" "private" "no-cache" "no-store

面试

最后都变了- 提交于 2019-12-06 09:09:25
面试 1、面试指导方针 在面试官问到技术的时候 是什么?有什么特点? what 为什么用它? why 在项目的哪一个地方用过? 使用的具体步骤?使用过程中问题总结? how 2、面试自我介绍之大套路 3、排序算法? 冒泡排序: 每次拿两个数进行比较,总是把小的放在最前面,大的放在最后面,第二次是第二个数和第三个数比较,如果第三个小于第二个,那么第三个和第二个替换位置,一次这样比较替换,第一轮循环完了呢,放在最后面的那个数就是这 一串数字中最大的数。第二轮循环和第一轮一样,第一个和第二个比较,最小的放在最前面,依次类推。如果有10个数字,那么就进行9次循环,最小的在最前面,最大的放在最后面。 好处呢,就是查询速度快 二分查找: 二分查找就是从一串数字中找到某个数字。 原理就是必须有一串数字是从小到大排序,把这串数字进行划分,分为三段,前半段,中止段,和中止后半段。查找数字或者字符先从中止段查找,查到的数字或者字符和中止正好相等,那么久直接取出来,如果比它大就从后半段查找,后半段在进行二分法,进行递归的调用查找,如果比中止小,走前面的中止段,在进行拆分,进行二分查找法。 4、说一下你对Spring的理解? 关于Spring的话,我们平时做项目一直都在用,不管是使用ssh还是使用ssm,都可以整合。Spring里面主要的就三点,也就是核心思想,DI,IOC,AOP。 DI就是依赖注入

redis 缓存穿透、击穿、雪崩

我们两清 提交于 2019-12-06 08:44:50
缓存穿透: 大量查询 redis 中不存在的key(用随救数进行查询),导致每次都会去查询数据库,造成数据库压力过大(甚至宕机)。 解决办法: 1.对我们的 api 接口 进行限流处理、用户授权、黑名单和白名单进行拦截。 2.将不存在的 key 存到 redis 中并设置有效期,有效减轻短时间内重复 key 的查询。不推荐使用(一般随机数都是不相等的)。 3.布隆过滤器 介绍:它实际上是一个很长的 二进制 向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。 缓存击穿: 在高并发的情况下,当一个缓存 key 过期时,因为访问该 key 请求较大,多个请求同时发现缓存过期,因此对多个请求同时数据库查询、同时向Redis写入缓存数据,这样会导致数据库的压力非常大; 1.使用分布式锁 保证在分布式情况下,使用分布式锁保证对于每个key同时只允许只有一个线程查询到后端服务,其他没有获取到锁的权限,只需要等待即可;这种高并发压力直接转移到分布式锁上,对分布式锁的压力非常大。 2.使用本地锁 使用本地锁与分布式锁机制一样,只不过分布式锁适应于服务集群、本地锁仅限于单个服务使用。 3.软过过期 设置热点数据永不过期或者异步延长过期时间; 4.布隆过滤器 缓存雪崩:

第4章 服务发现

半城伤御伤魂 提交于 2019-12-06 08:44:20
本章主要内容 为什么服务发现对基于云的应用程序环境很重要 与传统的负载均衡方法作对比,了解服务发现的优缺点 建立一个Spring Netflix Eureka服务器 通过Eureka注册一个基于Spring Boot的微服务 使用Spring Cloud和Netflix的Ribbon库来完成客户端负载均衡 在任何分布式架构中,都需要找到机器所在的物理地址。这个概念自分布式计算开始出现就已经存在,并且被正式称为服务发现。服务发现可以非常简单,只需要维护一个属性文件,这个属性文件包含应用程序使用的所有远程服务的地址,也可以像通用描述、发现与集成服务(Universal Description, Discovery, and Integration,UUDI)存储库一样正式(和复杂)。 服务发现对于微服务和基于云的应用程序至关重要,主要原因有两个。首先,它为应用团队提供了一种能力,可以快速地对在环境中运行的服务实例数量进行水平伸缩。通过服务发现,服务消费者能够将服务的物理位置抽象出来。由于服务消费者不知道实际服务实例的物理位置,因此可以从可用服务池中添加或移除服务实例。 这种在不影响服务消费者的情况下快速伸缩服务的能力是一个非常强大的概念,因为它驱使习惯于构建单一整体、单一租户(如一个客户)的应用程序的开发团队,远离仅考虑通过增加更大型、更好的硬件(垂直伸缩)的方法来扩大服务

java中常用的几种缓存类型

放肆的年华 提交于 2019-12-06 07:00:46
在平时的开发中会经常用到缓存,比如locache、redis等,但一直没有对缓存有过比较全面的总结。下面从什么是缓存、为什么使用缓存、缓存的分类以及对每种缓存的使用分别进行分析,从而对缓存有更深入的了解。 1.什么是缓存 在使用缓存前我们应该了解什么是缓存,下面是维基百科上面对于缓存的定义: 缓存是在计算机上的一个原始数据的复制集,以便于访问 缓存在计算机系统中被广泛应用,从缓存的定义来看,缓存是计算机上的原始数据的复制集,因此对于缓存的使用与应用场景密切相关,在不同的场景上会有不同的意义。 2.为什么使用缓存 首先对于互联网应用来说,用户体验是非常重要的,而 使用缓存的目的是想通过提高服务的性能从而提高应用的用户体验。 而系统性能的指标一般包括: 响应时间、延迟时间、吞吐量、并发用户数量和资源利用率等几个方面。 吞吐量:系统在单位时间内处理的请求的数量 3.缓存的分类 对于java程序开发者来说,根据缓存在软件系统中所处的位置的不同,缓存大体可以分为三类: 客户端缓存 服务端缓存 网络中缓存 下面主要针对客户端缓存和网络中缓存简单说明,并对服务端缓存做详细说明 3.1客户端缓存 对于BS架构的互联网应用来说客户端缓存主要分为页面缓存和浏览器缓存两种,对于APP而言主要是自身所使用的缓存。 3.2网络中缓存 网络中的缓存主要是指代理服务器对客户端请求数据的缓存

http请求缓存头详解

独自空忆成欢 提交于 2019-12-06 06:46:26
缓存的作用: 1.减少延迟(页面打开的速度)。 2.降低服务器负载(先取缓存,无缓存在请求服务器,有效降低服务器的负担)。 3.保证稳定性(有个笑话是手机抢购时为了保证服务器的稳定性,在前端写个随机数限制百分之二十的人发送数据到后台,这也侧面说明了缓存对于稳定性的作用)。 下图是自己画的,有点丑,请原谅!待会讲解! 浏览器与服务器进行通讯包含两部分: 1.请求头header(包含各种缓存信息)。 2.请求体bdoy(数据发送的主要内容) 页面缓存是由header决定的,包含四个参数: 一、Expires: http1.0推出的,指服务器返回的文件有效期,但其实这是有缺陷的,如果把本地的时间改为2118年,那Expires的时间怎么都会过期。 二、Last-Modified: http1.0推出的,指服务器文件的最后修改时间,浏览器会带上If-Modified-Since向服务器发送请求,与服务器文件修改时间Last-Modified做对比,如果时间不同,则获取数据返回200,否则返回304后调用浏览器本地硬盘的缓存。 这种方式也有问题,如果服务端文件频繁修改保存,那么Last-Modified就会频繁更改,每次都从服务端获取,这也就有了http1.1的修改。 从网上拿了个angular.js地址试了一下,第一次返回200,第二次刷新页面返回304。 时间:本地缓存获取>服务器获取

HTTP缓存剖析

徘徊边缘 提交于 2019-12-06 06:39:32
web浏览器会自动缓存访问过的页面,当访问同一个页面的请求时,浏览器不再从服务器中重新下载页面而是优先使用本地缓存中的页面 为什么要进行web缓存 从用户的角度来看web缓存加快了上网速度,当然这是用户主观认为的增加了上网速度,从设计者的角度来看: 1.网络带宽的限制,也就是说在单位时间内,用户从网络上获取的信息是有着上限的,这就限制了用户的上网速度,而缓存可以造成一种加快上网速度的假象; 2.缓存可以有效的减少网络冗余信息的传输,即同一个页面如果用户每个一段时间就刷新一次,服务器中的页面并没有发生变化,如果用户每刷新一次服务器就传送一个新的页面这就造成了数据的冗余; 3.缓存可以有效地削弱瞬间拥塞现象;瞬间拥塞可能造成整个网络和服务器的崩溃; 虽然缓存有着种种好处,但是缓存并不是简简单单地在本地存储一个页面,缓存首先要面对的一个现实问题即网络上有海量的页面,总不能都缓存吧;为了解决这个问题,提出了缓存命中的概念(缓存命中这个概念显然是一个舶来品)所谓的 缓存命中是指 当一个请求所需的页面在本地缓存中, 并且 经过检测缓存的页面并没有在服务器发生变化,浏览器将使用本地缓存的页面(缓存页面的再检测也称为缓存页面的保鲜度,当浏览器发现所需的页面在本地缓存中,为了确定页面是否是最新的页面时,浏览器将向服务器发送一个请求询问页面是否是最新的,最新的依据就是页面的最后修改时间