缓存服务器

MySQL配置文件mysql.ini参数详解

时光毁灭记忆、已成空白 提交于 2019-12-28 00:07:13
my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数。 my.ini分为两块:Client Section和Server Section。 Client Section用来配置MySQL客户端参数。 要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like '%innodb%'; # 查看innodb相关的运行时参数(比如当前正在打开的表的数量,当前已经打开的表的数量) show global status like 'open%tables'; # 查看全局的运行时参数,加上global是对当前mysql服务器中运行的所有数据库实例进行统计。不加global则只对当前数据库实例进行统计。 1、Client Section [client] port = 3306 # 设置mysql客户端连接服务端时默认使用的端口 [mysql] default-character-set=utf8 # 设置mysql客户端默认字符集 2、Server Section [mysqld] port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口 basedir="C:/Program Files

MySQL入门(二)

故事扮演 提交于 2019-12-27 23:44:18
1. MySQL 架构 1.1 逻辑架构图 1.1.1 Connection Pool: 连接池 * 管理缓冲 用户连接 , 线程处理 等需要缓存的需求。 * 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到 线程管理模块 。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。 * 而 连接线程 的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。 1.1.2 Parser: 解析器 * SQL 命令传递到解析器的时候会被解析器 验证和解析 。 主要功能: a . 将 SQL 语句进行 语义和语法的分析,分解成数据结构 ,然后按照 不同的操作类型进行分类, 然后做出针对性的转发到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的。 b. 如果在分解构成中遇到错误,那么就说明这个 sql 语句是不合理的 1.1.3 Optimizer: 查询优化器 * SQL 语句在查询之前会 使用查询优化器对查询进行优化 。 * 它使用的是“ 选取 - 投影 - 联接 ”策略进行查询。 用一个例子就可以理解: select uid,name from user

Apache深度优化

泄露秘密 提交于 2019-12-27 19:36:30
博文大纲: Apache深度优化 一、开启apache的Gzip(deflate)功能 二、开启expires缓存功能 三、禁止Apache进行目录遍历 四、隐藏apache的版本信息 五、apache日志切割 六、配置防盗链 一、开启Apache的Gzip(deflate)功能 gzip 可以极大的加速网站, 有时压缩比率高到 80%,最少都有 40%以上, 还是相当不错的。 在 Apache2 之后的版本, 模块名不叫 gzip,而叫 mod_deflate 如果要开启apache的压缩功能,需要在编译安装apache时,增加“--enable-deflate”配置项,并且必须在主配置文件中打开下面两个模块: LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so 注意:如果在编译安装时,没有增加“--enable-deflate”选项,可以使用DSO方式安装此功能,如下: [root@www ~]# cd /root/httpd-2.4.23/modules/filters/ #切换至apache 源码包 mod_deflate 所在的目录下 [root@www ~]# /usr/local/http-2.4.23/bin/apxs -c

通过查看mysql 配置参数、状态来优化你的mysql

邮差的信 提交于 2019-12-27 18:24:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标。 2. 直接使用mysqladmin查看其性能指标,例如: UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T" mysqladmin两个参数,status,extended-status shell > mysqladmin -uroot -ppassword variables status 可得到以下信息(后面详解) -------------------------------------------------------------------------------------------------------------------------- Uptime: 4557887 #mysql运行的秒数 Threads: 1 #连接数 Questions: 1684130 #The number of questions (queries) from clients since the server was

HTTP协议详解

你离开我真会死。 提交于 2019-12-27 16:39:18
一、HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下: http://host[":"port][abs_path ] http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。 eg: 1、输入: www.guet.edu.cn 浏览器自动转换成: http://www.guet.edu.cn/ 2、http:192.168.0.116:8080/index.jsp 二、HTTP协议详解之请求篇 http请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示请求方法

高并发场景下使用缓存需要注意那些问题?

僤鯓⒐⒋嵵緔 提交于 2019-12-27 16:03:40
一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。 二、缓存并发问题 缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的流程。但是,在高并发场景下,有可能多个请求并发的去从数据库获取数据,对后端数据库造成极大的冲击,甚至导致 “雪崩”现象。此外,当某个缓存key在被更新时,同时也可能被大量请求在获取,这也会导致一致性的问题。那如何避免类似问题呢?我们会想到类似“锁”的机制,在缓存更新或者过期的情况下,先尝试获取到锁,当更新或者从数据库获取完成后再释放锁,其他的请求只需要牺牲一定的等待时间,即可直接从缓存中继续获取数据。 三、缓存穿透问题 缓存穿透在有些地方也称为“击穿”。很多朋友对缓存穿透的理解是:由于缓存故障或者缓存过期导致大量请求穿透到后端数据库服务器,从而对数据库造成巨大冲击。 这其实是一种误解。真正的缓存穿透应该是这样的: 在高并发场景下,如果某一个key被高并发访问,没有被命中,出于对容错性考虑,会尝试去从后端数据库中获取,从而导致了大量请求达到数据库,而当该key对应的数据本身就是空的情况下,这就导致数据库中并发的去执行了很多不必要的查询操作,从而导致巨大冲击和压力。

Apache网页优化之缓存

时间秒杀一切 提交于 2019-12-27 11:14:27
Apache网页优化之缓存 文章目录 一、Apache的网页缓存 二、网页缓存配置 一、Apache的网页缓存 Apache 的mod_expries 模块会自动生成页面头部信息中的 Express标签和 Cache-Control 标签。 客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要再次向服务器发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。 二、网页缓存配置 1、挂载共享文件,并解压到 /opt/目录下。 安装包优化,转移到http-2.4.2下面 2、安装编译工具 3、在 /opt/httpd-2.4.2 配置 4、make && make install 5、打开Apache的主配置文件,开启 expires 模块 修改域名和监听地址 开启expires模块 在文件末尾添加 验证apachen甚至是否成功 6、开启apache服务,关闭防火墙,并验证模块开启 win10验证: 在win10系统 安装抓包工具Fiddler。打开 Fiddler4,同时用浏览器输入IP地址:192.168.220.137,访问测试网站 如果不要缓存时间这么长, 可以在主配置文件中 我们自己在末尾添加的那段命令中 ,把50 修改成自己要的时间。 来源: 51CTO 作者: wx5d8a05337d6b9 链接: https://blog

web性能优化

99封情书 提交于 2019-12-27 10:56:02
常用方法 压缩源码和图片   JavaScript文件源代码:可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可 以使用一些开源压缩软件来压缩,比如24色变成8色、去掉一些PNG格式信息等。   选择合适的图片格式:如果图片颜色数较多就使用JPG格式,如果图片颜色数较少就使用PNG格式,如果能够通过服务器端判断浏览器支持WebP,那么就使用WebP格式和 SVG格式。 合并静态资源   包括CSS、JavaScript和小图片,减少HTTP请求。 开启服务器端的Gzip压缩   这对文本资源非常有效,对图片资源则没那么大的压缩比率。 使用CDN 或者一些公开库使用第三方提供的静态资源地址    比如jQuery、normalize.css。一方面增加并发下载量,另一方面能够和其他网站共享缓存。 延长静态资源缓存时间   频繁访问网站的访客就能够更快地访问。不过,这里要通过修改文件名的方式,确保在资源更新的时候,用户会拉取到最新的内容。 CSS引用放在页面头部,JavaScript引用放在页面底部   这样就不会阻塞页面渲染,让页面出现长时间的空白。 前端工程师的性能优化 基本优化方法是: 尽量减少同一域下的HTTP请求数 以及尽量减少每一个资源的体积   浏览器常常限定了对同一域名发起的并发连接数的上限。E6

浅淡缓存

会有一股神秘感。 提交于 2019-12-27 10:12:54
缓存作为常用的优化手段,是架构师必备技能之一,在面试时我也喜欢让候选人系统的介绍一下缓存知识,能把缓存体系说清楚的并不多。 单机硬件角度缓存 下图是经典的计算机组成原理的缓存结构图 速度从高到低依次是:L1 > L2 > L3 > 内存 > 磁盘(硬盘缓存+硬盘) 单位容量制造成本从高到低依次是:L1 > L2 > L3 > 内存 > 磁盘(硬盘缓存+硬盘) 对硬件来说,缓存是基于有限的成本下,介于相对高速和相对低速设备之间的缓冲,目的是尽可能的提升处理效率。 用户角度看缓存 DNS缓存 对终端用户而言,操作系统和浏览器都存在着DNS缓存 CDN CDN不是缓存,其核心思想是将用户的请求导向离用户最近的服务节点上,提高用户访问网站的响应速度。只是这里说的最近的服务节点一般是容量有限的缓存服务器。 浏览器缓存 最典型流程是浏览器第一次访问时,服务器返回当前时间Last-Modified值,记为t,当下一次访问时,If-Modified-Since取值t,配合Cache-Control,如果服务端资源未被修改,返回状态码304,浏览器直接从本地磁盘取缓存的网页文件。 对用户来说,缓存是为了从最近的地方取得所需内容,玩命减少等待时间,提升响应速度。 架构角度看缓存 接入层缓存:Nginx缓存 进程内缓存:JVM堆内缓存、堆外缓存 主机内缓存:Local Redis、本地磁盘

php缓存技术总结

青春壹個敷衍的年華 提交于 2019-12-27 09:15:02
缓存是指临时文件交换区,电脑把最常用的文件从存储器里提出来临时放在缓存里,就像把工具和材料搬上工作台一样,这样会比用时现去仓库取更方便。因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在忙完后还是会把文件送到硬盘等存储器里永久存储。电脑里最大的缓存就是内存条了,最快的是CPU上镶的L1和L2缓存,显卡的显存是给GPU用的缓存,硬盘上也有16M或者32M的缓存。千万不能把缓存理解成一个东西,它是一种处理方式的统称! Cache 是“以空间换时间”策略的典型应用模式,是提高系统性能的一种重要方法。缓存的使用在大访问量的情况下能够极大的减少对数据库操作的次数,明显降低系统负荷提高系统性能。相比页面的缓存,结果集是一种“原始数据”不包含格式信息,数据量相对较小,而且可以再进行格式化,所以显得相当灵活。由于PHP是“一边编译一边执行”的脚本语言,某种程度上也提供了一种相当方便的结果集缓存使用方法——通过动态include相应的数据定义代码段的方式使用缓存。如果在RamDisk上建缓存的话,效率应该还可以得到进一步的提升。以下是一小段示例代码,供参考。 (参 考: PHP数据缓存技术 ) WEB程序获取信息的方式主要是查询数据库,当数据库不是很大的情况下不会有太大的问题.然而,随着网站的发展,数据库呈几何级数的方式增长的时候,就会出现瓶颈.于是PHP缓存技术诞生了。 PHP缓存包括