Site updated: 2022-10-17 14:20:10

This commit is contained in:
qinglong
2022-10-17 14:20:11 +08:00
parent 4433910317
commit 463c21e985
59 changed files with 225 additions and 70 deletions

79
rss.xml
View File

@ -10,8 +10,8 @@
</author>
<description>hito的博客</description>
<language>zh-CN</language>
<pubDate>Fri, 14 Oct 2022 17:13:00 +0800</pubDate>
<lastBuildDate>Fri, 14 Oct 2022 17:13:00 +0800</lastBuildDate>
<pubDate>Mon, 17 Oct 2022 14:07:35 +0800</pubDate>
<lastBuildDate>Mon, 17 Oct 2022 14:07:35 +0800</lastBuildDate>
<category term="hito" />
<category term="無言" />
<category term="博客" />
@ -19,14 +19,87 @@
<category term="笔记" />
<category term="心得体会" />
<category term="踩坑" />
<item>
<guid isPermalink="true">https://blog.jingxiyuan.cn/2022/10/17/redis%E4%B8%BB%E4%BB%8E%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE%E8%AE%B0%E5%BD%95/</guid>
<title>redis主从基础配置记录</title>
<link>https://blog.jingxiyuan.cn/2022/10/17/redis%E4%B8%BB%E4%BB%8E%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE%E8%AE%B0%E5%BD%95/</link>
<pubDate>Mon, 17 Oct 2022 14:07:35 +0800</pubDate>
<description><![CDATA[ &lt;h4 id=&#34;主服务&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#主服务&#34;&gt;#&lt;/a&gt; 主服务&lt;/h4&gt;
&lt;p&gt;port 6379&lt;/p&gt;
&lt;p&gt;requirepass 123456密码建议不设置&lt;/p&gt;
&lt;p&gt;vm-enabled no (虚拟内存,内存够的情况下可以不使用)&lt;/p&gt;
&lt;p&gt;maxmemory 1GB告诉 Redis 当使用了多少物理内存后就开始拒绝后续的写入)&lt;br /&gt;
bind 127.0.0.1 (注释掉,否则不能外部连接)&lt;/p&gt;
&lt;p&gt;rdbchecksum no持久化数据检查&lt;/p&gt;
&lt;p&gt;list-max-ziplist-size 1024ziplist 的最大容量,正数为自己指定的大小。负数 - 1 到 - 5 为对应的值 4 到 64Kb&lt;/p&gt;
&lt;p&gt;list-compress-depth 20quicklist 的两端多少个 node 不压缩0 为全部不压缩)&lt;/p&gt;
&lt;p&gt;sysctl vm.overcommit_memory=1 (立即生效)&lt;/p&gt;
&lt;p&gt;修改 /etc/sysctl.conf 添加 vm.overcommit_memory=1表示内核允许分配所有的物理内存而不管当前的内存状态如何。Redis 的 RDB 持久化实现是 folk 一个子进程,然后让子进程将内存镜像 dump 到 RDB 文件中。理论上来说是需要跟父进程一样的内存空间,但是由于 linux 很早就支持的 copy-on-write 技术,所以实际上并不需要这么多的物理内存的。)&lt;/p&gt;
&lt;h6 id=&#34;禁用透明大页影响性能&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#禁用透明大页影响性能&#34;&gt;#&lt;/a&gt; 禁用透明大页(影响性能)&lt;/h6&gt;
&lt;p&gt;需要 sudo su 切换到 root 身份sudo 没用)&lt;/p&gt;
&lt;p&gt;echo never &amp;gt; /sys/kernel/mm/transparent_hugepage/enabled&lt;/p&gt;
&lt;p&gt;修改 /etc/init.d/redis-server加入 /bin/echo never &amp;gt; /sys/kernel/mm/transparent_hugepage/enabled&lt;/p&gt;
&lt;h6 id=&#34;修复tcp警告&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#修复tcp警告&#34;&gt;#&lt;/a&gt; 修复 TCP 警告&lt;/h6&gt;
&lt;p&gt;sysctl net.core.somaxconn=1024立即生效&lt;/p&gt;
&lt;p&gt;修改 /etc/sysctl.conf 添加 net.core.somaxconn=1024&lt;/p&gt;
&lt;p&gt;客户端的输出缓冲区的限制,因为某种原因客户端从服务器读取数据的速度不够快,可用于强制断开连接(一个常见的原因是一个发布 / 订阅客户端消费消息的速度无法赶上生产它们的速度)。&lt;/p&gt;
&lt;p&gt;可以三种不同客户端的方式进行设置:&lt;br /&gt;
normal -&amp;gt; 正常客户端&lt;br /&gt;
slave -&amp;gt; slave 和 MONITOR 客户端&lt;br /&gt;
pubsub -&amp;gt; 至少订阅了一个 pubsub channel 或 pattern 的客户端&lt;br /&gt;
每个 client-output-buffer-limit 语法 :&lt;/p&gt;
&lt;p&gt;client-output-buffer-limit &amp;lt;class&amp;gt;&amp;lt;hard limit&amp;gt; &amp;lt;soft limit&amp;gt; &amp;lt;soft seconds&amp;gt;&lt;br /&gt;
一旦达到硬限制客户端会立即断开,或者达到软限制并保持达成的指定秒数(连续)。&lt;/p&gt;
&lt;p&gt;例如,如果硬限制为 32 兆字节和软限制为 16 兆字节 /10 秒,客户端将会立即断开。如果输出缓冲区的大小达到 32 兆字节,客户端达到 16 兆字节和连续超过了限制 10 秒,也将断开连接。默认 normal 客户端不做限制,因为他们在一个请求后未要求时(以推的方式)不接收数据,&lt;br /&gt;
只有异步客户端可能会出现请求数据的速度比它可以读取的速度快的场景。&lt;/p&gt;
&lt;h6 id=&#34;把硬限制和软限制都设置为-0-来禁用该特性&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#把硬限制和软限制都设置为-0-来禁用该特性&#34;&gt;#&lt;/a&gt; 把硬限制和软限制都设置为 0 来禁用该特性&lt;/h6&gt;
&lt;p&gt;client-output-buffer-limit normal 0 0 0&lt;/p&gt;
&lt;p&gt;client-output-buffer-limit slave 5gb 512mb 60&lt;/p&gt;
&lt;p&gt;client-output-buffer-limit pubsub 32mb 8mb 60&lt;/p&gt;
&lt;p&gt;--- 关闭 RDB 持久化 ---&lt;/p&gt;
&lt;p&gt;save &amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;默认配置如下:&lt;/p&gt;
&lt;p&gt;save 900 1 #900 秒内有 1 次更新就持久化&lt;/p&gt;
&lt;p&gt;save 300 10 #300 秒内有 10 次更新就持久化&lt;/p&gt;
&lt;p&gt;save 60 10000 #60 秒内有 10000 次更新就持久化&lt;/p&gt;
&lt;p&gt;--- 关闭 RDB 持久化 ---&lt;/p&gt;
&lt;p&gt;主从同步支持两种策略,即 disk 和 socket 方式。&lt;/p&gt;
&lt;p&gt;新的 slave 端和重连的 salve 端不允许去继续同步进程,这被称之为 “完全同步”。&lt;/p&gt;
&lt;p&gt;一个 RDB 文件从 master 端传到 slave 端,分为两种情况:&lt;/p&gt;
&lt;p&gt;1、支持 diskmaster 端将 RDB file 写到 disk稍后再传送到 slave 端;&lt;/p&gt;
&lt;p&gt;2、无磁盘 disklessmaster 端直接将 RDB file 传到 slave socket不需要与 disk 进行交互。&lt;br /&gt;
无磁盘 diskless 方式适合磁盘读写速度慢但网络带宽非常高的环境。&lt;/p&gt;
&lt;p&gt;repl-diskless-sync no 默认不使用 diskless 同步方式&lt;/p&gt;
&lt;p&gt;repl-diskless-sync-delay 30 无磁盘 diskless 方式在进行数据传递之前会有一个时间的延迟,以便 slave 端能够进行到待传送的目标队列中,这个时间默认是 5 秒&lt;/p&gt;
&lt;p&gt;repl-ping-slave-period 60 slave 端向 server 端发送 pings 的时间区间设置,默认为 10 秒&lt;/p&gt;
&lt;p&gt;repl-timeout 3600 设置超时时间&lt;/p&gt;
&lt;p&gt;repl-disable-tcp-nodelay no 是否启用 TCP_NODELAY如果启用则会使用少量的 TCP 包和带宽去进行数据传输到 slave 端,当然速度会比较慢;如果不启用则传输速度比较快,但是会占用比较多的带宽。&lt;/p&gt;
&lt;p&gt;repl-backlog-size 1mb 设置 backlog 的大小backlog 是一个缓冲区,在 slave 端失连时存放要同步到 slave 的数据,因此当一个 slave 要重连时,经常是不需要完全同步的,执行局部同步就足够了。&lt;br /&gt;
backlog 设置的越大slave 可以失连的时间就越长。&lt;/p&gt;
&lt;p&gt;repl-backlog-ttl 3600 如果一段时间后没有 slave 连接到 master则 backlog size 的内存将会被释放。如果值为 0 则表示永远不释放这部份内存。&lt;/p&gt;
&lt;p&gt;slave-priority 100 slave 端的优先级设置,值是一个整数,数字越小表示优先级越高。当 master 故障时将会按照优先级来选择 slave 端进行恢复,如果值设置为 0则表示该 slave 永远不会被选择。&lt;/p&gt;
&lt;p&gt;min-slaves-to-write 3&lt;/p&gt;
&lt;p&gt;min-slaves-max-lag 10 设置当一个 master 端的可用 slave 少于 N 个,延迟时间大于 M 秒时,不接收写操作。&lt;/p&gt;
&lt;h4 id=&#34;从服务&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#从服务&#34;&gt;#&lt;/a&gt; 从服务&lt;/h4&gt;
&lt;p&gt;基本配置同主服务一致&lt;/p&gt;
&lt;p&gt;slaveof 127.0.0.1 6379主 redis 的 ip 和端口)&lt;/p&gt;
&lt;p&gt;masterauth 123456 (主 redis 的密码)&lt;/p&gt;
&lt;p&gt;可以通过 slaveof no one 命令将 Slaver 升级为 Maste&lt;/p&gt;
&lt;p&gt;bgsave (持久化命令,在 redis-cli 中执行,默认创建 dump.rdb 文件,路径为 /var/lib/redis/dump.rdb。可通过 find /-name dump.rd 查找)&lt;/p&gt;
&lt;p&gt;masterauth 123456 (主 redis 的密码)&lt;/p&gt;
&lt;h4 id=&#34;redis命令&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#redis命令&#34;&gt;#&lt;/a&gt; redis 命令&lt;/h4&gt;
&lt;p&gt;批量删除 key&lt;br /&gt;
redis-cli -n 6 scan 0 match *2020-06-12 count 10000 | xargs redis-cli -n 6 del&lt;/p&gt;
]]></description>
</item>
<item>
<guid isPermalink="true">https://blog.jingxiyuan.cn/2022/10/14/%E5%85%81%E8%AE%B8%E8%B7%A8%E5%9F%9F%E8%8E%B7%E5%8F%96cookies%E6%96%B9%E6%B3%95/</guid>
<title>允许跨域获取cookie的方法</title>
<link>https://blog.jingxiyuan.cn/2022/10/14/%E5%85%81%E8%AE%B8%E8%B7%A8%E5%9F%9F%E8%8E%B7%E5%8F%96cookies%E6%96%B9%E6%B3%95/</link>
<category term="技术分享" scheme="https://blog.jingxiyuan.cn/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/" />
<category term="nginx" scheme="https://blog.jingxiyuan.cn/tags/nginx/" />
<category term="iframe" scheme="https://blog.jingxiyuan.cn/tags/iframe/" />
<category term="cookie" scheme="https://blog.jingxiyuan.cn/tags/cookie/" />
<category term="iframe" scheme="https://blog.jingxiyuan.cn/tags/iframe/" />
<pubDate>Fri, 14 Oct 2022 17:13:00 +0800</pubDate>
<description><![CDATA[ &lt;h4 id=&#34;使用场景&#34;&gt;&lt;a class=&#34;anchor&#34; href=&#34;#使用场景&#34;&gt;#&lt;/a&gt; 使用场景&lt;/h4&gt;
&lt;p&gt;  在 A 域名的页面向 B 域名提交数据时需要代入 B 域名的 cookie否则 B 域名会跳转到登陆页面。解决方式需要使用到 nginx 反向代理,配置如下:&lt;/p&gt;