![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 83
私念
PHP GOLANG
展开
-
Redis官方可视化工具RedisInsight功能强大
背景最近逛了一下Redis官方网站,发现Redis不仅推出了很多新特性,而且还发布了一款可视化工具RedisInsight。试用了一下感觉非常不错,最关键的是能支持RedisJSON之类的新特性,这是第三方工具无法比拟的。今天带大家体验一下RedisInsight,确实非常好用!RedisInsight简介RedisInsight是Redis官方出品的可视化管理工具,可用于设计、开发、优化你的Redis应用。支持深色和浅色两种主题,界面非常炫酷!可支持String、Hash、Set、List原创 2022-03-24 20:04:06 · 2411 阅读 · 0 评论 -
深入理解GC原理
垃圾定位算法(1)引用计数法 (Reference Counting)。 如 python php 通常C++通过指针引用计数来回收对象,但是这不能处理循环引用,原理是在每个对象内部维护一个引用计数,当对象被引用时引用计数加一,当对象不被引用时引用计数减一。当引用计数为 0 时,自动销毁对象。 例如:谁想用驴干活的时候,就在驴身上画个圈圈,用一次画一个,用完了把代表本次使用的圈圈擦掉。当这头驴身上没圈圈的时候,就可以卸磨杀驴了,身上有圈圈的驴不能杀。 这...原创 2022-03-11 15:29:55 · 565 阅读 · 0 评论 -
nginx location配置详细解释
语法详解语法规则: location [=|~|~*|^~] /uri/ { … }=开头表示精确匹配^~开头表示uri以某个常规字符串开头,理解为匹配url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~/static//aa匹配到(注意是空格)。以xx开头~开头表示区分大小写的正则匹配以xx结尾~*开头表示不区分大小写的正则匹配...原创 2022-02-22 19:27:22 · 1356 阅读 · 0 评论 -
TCP全链接队列满的问题分析之net.core.somaxconn详解
背景参考:TCP全链接队列满的问题分析之net.core.somaxconn详解_运维_PHP面试网最近控制台查看腾讯云服务器状态时,发现一个异常情况提示如下:该实例最近12小时内在2022-01-18 14:48出现过TCP全链接队列满的情况,为避免成为业务瓶颈,建议您检查业务健康情况。可参考文档:点击查看TCP 全连接队列满TCP 全连接队列的长度取net.core.somaxconn及业务进程调用 listen 时传入的 backlog 参数,两者中的较小值。若您的实..原创 2022-01-18 17:49:44 · 5385 阅读 · 0 评论 -
谷歌浏览器Chrome 80版本默认SameSite导致跨域请求Cookie丢失
参考:谷歌浏览器Chrome 80版本默认SameSite导致跨域请求Cookie丢失_php_PHP面试网最近要实现一个简单的单点登录,并且将相关信息保存在Cookie中。 后来发现在Chrome浏览器中不能跨域设置cookie,其他浏览器如IE,firefox访问正常。最后一番排查,发现是Chrome浏览器升级到80版本后才有这个问题,在80前的版本中访问正常。原来,在Chrome 80版本中,Chrome会将没有声明SameSite值的cookie默认设置为SameSite=...原创 2022-01-14 15:00:00 · 1739 阅读 · 0 评论 -
elasticsearch中best fields策略dis_max和tie_breaker详解
参考:elasticsearch中best fields策略dis_max和tie_breaker详解概念 常规multi-field搜索结果分析 dis_max参数设置 一、为帖子数据增加content字段POST/forum/article/_bulk{"update":{"_id":"1"}}{"doc":{"content":"iliketowritebestelasticsearcharticle"}}{"upda...原创 2021-12-28 20:06:30 · 578 阅读 · 0 评论 -
nginx中http转https的几种方式
参考:nginx中http转https的几种方式第一种方式使用return 301如下:server{listen80;server_namewww.phpmianshi.com;return301https://$http_host$request_uri;access_logoff;}第二种方式使用rewrite如下:server{listen80;server_namewww.phpmianshi.com;r...原创 2021-12-02 20:33:42 · 29515 阅读 · 2 评论 -
linux中入侵类问题排查思路
参考:linux中入侵类问题排查思路一、检查隐藏帐户及弱口令 检查服务器系统及应用帐户是否存在弱口令: 检查说明:检查管理员帐户、数据库帐户、网站后台管理员帐户等密码设置是否较为简单,简单的密码很容易被黑客破解。 解决方法:以管理员权限登录系统或应用程序后台,修改为复杂的密码。 使用last命令查看下服务器近期登录的帐户记录,确认是否有可疑 IP 登录过机器: 检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻.原创 2021-11-22 20:00:45 · 1173 阅读 · 0 评论 -
vim使用bash-support插件打造成shell编辑器
参考:vim使用bash-support插件打造成shell编辑器背景IDE就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件。 IDE 将所有开发工作集中到一个程序中,使得程序员可以编写、修改、编译、部署以及调试程序。在这篇文章中,我们会介绍如何通过使用 bash-supportvim 插件将Vim 编辑器安装和配置为一个编写 Bash 脚本的 IDE。简介bash-support 是一个高度定制化的 vim 插件,它允许你插入:文件头、补全语句、注释...原创 2021-11-18 20:39:00 · 796 阅读 · 0 评论 -
linux中安全加固几条建议
参考:linux中安全加固几条建议 - PHP面试网背景本文以CentOS7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1) 设置复杂密码服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂密码 ,也可使用密码生成器自动生成复杂密码,这里给您一个链接参考:生成随机密码 - 密码生成器echo"root:wgr1TDs2Mnx0XuAv"|chpasswd2) 设置密码策略修改文件/etc/login.defsPASS_MAX...原创 2021-11-17 21:10:49 · 300 阅读 · 0 评论 -
linux中修改密码passwd、chpasswd详解
命令passwdpasswd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username] passwd程序用于更新用户的身份验证令牌(口令/密码)。此任务是通过调用Linux-PAM和Libuser API实现的。实际上,它将自身初始化为Linux-PAM的”passwd”服务,并利用配置的密码模块进行身份验证,然后更新用户的密原创 2021-10-22 18:17:34 · 2432 阅读 · 0 评论 -
php中如何实现SSO单点登录
北京新增1例甘肃来京确诊病例今天(19日),北京丰台区新增 1 名甘肃来京确诊病例,为银川市确诊病例艾某某的密切接触者。刚刚,北京市召开疫情防控新闻发布会,介绍疫情防控最新情况。病例详情:确诊病例户籍甘肃省武威市,现住北京市丰台区恒富中街。 该病例长期在甘肃省武威市居住,10月15日乘坐K42次列车来京途中,与宁夏回族自治区银川市新冠肺炎确诊病例艾某某同一车厢相邻卧铺。 10月17日自觉咽部不适、咳嗽。 10月18日看到确诊病例艾某某新闻后,主动向辖区疾控中心报告,原创 2021-10-20 20:53:47 · 501 阅读 · 0 评论 -
openresty中的高级限制请求
参考:openresty中的高级限制请求Nginx 有ngx_http_limit_req_module可用于限制请求处理速率,但大多数人似乎只使用其基本功能:通过远程地址限制请求率http{limit_req_zone$binary_remote_addrzone=one:10mrate=1r/s;...server{...location/search/{limit_reqzone=oneb...原创 2021-10-11 19:58:39 · 426 阅读 · 0 评论 -
openresty中location和lua的使用详解
参考:openresty中location和lua的使用详解与其他 location 配合nginx 世界的 location 是异常强大的,毕竟 nginx 的主要应用场景是在负载均衡、API server,在不同 server、location 之间跳转更是家常便饭。利用不同 location 的功能组合,我们可以完成内部调用、流水线方式跳转、外部重定向等几大不同方式,下面将给大家介绍几个主要应用,就当抛砖引玉。内部调用例如对数据库、内部公共函数的统一接口,可以把它们放到统一的 loca原创 2021-10-09 17:39:06 · 2100 阅读 · 0 评论 -
DNS原理什么叫域名劫持和域名欺骗/域名污染
参考:DNS原理什么叫域名劫持和域名欺骗/域名污染 - PHP面试网给大家扫盲一下 DNS 的常识。既然是扫盲 DNS,也顺带说说“域名劫持”和“域名污染”这两个很容易混淆的概念。提醒一下:这两者的其中之一是 GFW 的大杀器,爱翻墙的同学有必要了解。DNS 是啥?DNS 是洋文“Domain Name System”的缩写,直译过来就是“域名系统”。DNS 有啥用?咱们每天打交道的这个互联网,其底层的基石是“IP”。IP 是“Internet Protocol”的缩写,中文就.原创 2024-05-09 11:20:51 · 826 阅读 · 0 评论 -
Gitlab 安装与配置
参考:Gitlab 安装与配置Gitlab 安装使用 docker-compose 安装 Gitlab,traefik 反向代理 Gitlab,并开启 https编辑 docker-compose.yaml 文件 $mkdirgitlab$cat<<'EOF'|teegitlab/docker-compose.yamlversion:"3"services:gitlab:image:gitlab/gitlab-ceco...原创 2021-09-26 11:59:22 · 224 阅读 · 0 评论 -
SonarQube的安装、配置与使用
参考:SonarQube的安装、配置与使用简介sonarqube是一个代码质量管理平台,可通过安装不同的插件集成测试工具、代码质量分析工具、持续集成等多种功能。sonarqube 目前最新版为 8.0,最新稳定版本为 7.9,由于性能原因,sonar 从 7.9 之后就不再 支持 MySQL,替代方案为 PostgreSQL。这里选择postgres:12和sonarqube:7.9-community两个 docker 镜像,使用 docker-compose 配置并启动一、...原创 2021-09-23 20:13:35 · 9731 阅读 · 1 评论 -
openresty操作mysql的详解
参考:openresty操作mysql的详解OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。OpenResty 通过汇聚各种设计精良的 Nginx 模块,从而将 Nginx 有效的变成一个强大的 Web 应用服务器,这样, Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种C以及Lua 模块,快速构造出足以胜任 10K+ 并发连接响应的超高性能Web原创 2021-09-14 20:31:49 · 1231 阅读 · 0 评论 -
openresty中使用淘宝的concat进行css和js合并
背景我们在访问淘宝的时候,会看到代码中的js和css文件是通过一次请求获得的,我们知道浏览器一次请求只能并发访问数个资源,这样的处理错输在网络传输层面可以大大节省时间,这里使用的技术就是把css、js等静态资源合并为一个资源。淘宝使用的tengine是基于nginx的web服务器,从11年底开源。所使用的是mod_concat模块,合并多个文件在一个响应报文中。实战先查看下当前openresty的版本和配置信息/usr/local/openresty/nginx/sbin/ng原创 2021-09-10 18:27:27 · 369 阅读 · 0 评论 -
Certbot-免费的https证书
参考:https://phpmianshi.com/?id=76什么是HTTPS?HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:全称:Hyper Text Transfer Protocol over Secure Socket Layer,则是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基原创 2021-09-01 21:53:46 · 305 阅读 · 0 评论 -
nginx实现高并发的优化手段有哪些
参考:https://phpmianshi.com/?id=281Nginx 是如何实现高并发的?异步,非阻塞,使用了epoll 和大量的底层代码优化。如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。正常情况下,会有很多进程一直在等待中。而nginx采用一个master进程,多个woker进程的模式。 master进程主要负责收集、分发请求。每当一个请求过来时,master就拉起一个worker进程负责处理这个请求。 同时maste原创 2021-08-31 19:28:39 · 193 阅读 · 0 评论 -
linux中如何检测UDP端口是否开启
参考:https://phpmianshi.com/?id=279背景搭建了一台dnsmasq DNS解析服务器,不想对外网提供服务,只给内网提供解析服务,想关闭udp53端口的入站规则如何判断UDP 53端口是否提供服务呢?我们的服务端:123.207.190.86客户端:115.159.122.651. server启动一个icmp抓包侦听:$ tcpdump -n -i eth0 icmp and host 115.159.122.65tcpdump: ver原创 2021-08-25 09:16:57 · 6349 阅读 · 0 评论 -
nginx面试中最常见的18道题
参考:https://phpmianshi.com/?id=351、请解释一下什么是Nginx?Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以其高性能、稳定性、丰富的功能、简单的配置和低资源消耗而闻名。也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器、负载均衡器和HTTP缓存。Nginx 解决了服务器的C10K(就是.原创 2021-08-12 21:30:58 · 1276 阅读 · 4 评论 -
linux中cat EOF详解
参考:https://phpmianshi.com/?id=275关于cat << EOF语句在linux shell脚本中cat << EOF的语句,起到什么作用?首先必须要说明的是EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。接下来,简单描述一下几种常见的使用方式及其作用:1、cat<<EOF,以EOF输入字符为标准输入结束:2、cat>filename,创建文件,并把标准原创 2021-08-11 21:50:58 · 808 阅读 · 0 评论 -
linux中tee命令详解
参考:https://phpmianshi.com/?id=274介绍tee最基本的用法就是显示输出结果并且保存内容到文件中。下面例子使用free命令显示系统内存使用信息,并使用tee命令将信息输出到屏幕,并保存到文件mem.txt中。[root@localhost ~]# free -h | tee mem.txt total used free shared buff/cache availableMem: ...原创 2021-08-09 20:41:26 · 1125 阅读 · 0 评论 -
linux中df -i 100%解决方案
背景E138: Can't write viminfo file /root/.viminfo!Press ENTER or type command to continue这不科学呀,明明是root,怎么可能无法写入?后来查看磁盘inodes状态,发现/已经是100%,难怪无法写入。df -iFilesystem Inodes IUsed IFree IUse% Mounted on/dev/mapper/vg_db02-lv_...原创 2021-08-03 19:36:29 · 3880 阅读 · 0 评论 -
HTTP状态码302、303和307的前世今生
参考:https://www.phpmianshi.com/?id=232背景《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP1.1”;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。对于这3个状态码,WiKi和RFC文档都有详解,下面我们简单介绍一下。302RFC1945(http://tools.ietf.org/html/rfc1945#page-34),也原创 2021-02-04 18:00:51 · 263 阅读 · 0 评论 -
jmeter压测实战
参考:https://www.phpmianshi.com/?id=230下载安装下载JDK : https://download.oracle.com/otn-pub/java/jdk/15.0.2+7/0d1cfde4252546c6931946de8db48ee2/jdk-15.0.2_windows-x64_bin.exe?AuthParam=1611197417_61c2592982272667dcf142a95ef6d58a或者 Sun公司的官网[https://www.or..原创 2021-01-27 19:13:30 · 335 阅读 · 0 评论 -
php中使用swoole加速lumen项目-laravelS实战
参考:https://www.phpmianshi.com/?id=195背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目https://github.com/hhxsv5/laravel-s下面我们来实战一下环境介绍php7.2centos7swoole4.5.7lumen5.81.安装源码安装wgethttps://github.com/...原创 2020-12-14 19:31:37 · 827 阅读 · 0 评论 -
如何写出漂亮的代码-代码整洁之道
参考:https://www.phpmianshi.com/?id=196背景代码本就该是直接简单的,横就是横,纵就是纵,架构原本也本是清晰明了的,模块是模块,过程是过程。可随着项目生命周期的变长,随着需求不断的被实现,面对不同思想的人,不同场景的要求,不同技能水平的实施,就让原本平直的路走成了立交桥,织成了逻辑网。这时候再浏览代码,要走通某一个流程,即便是熟悉路况的“本地人”,编写代码的“原住民”也不一定能走的顺畅。Robert Martin的这句话非常合适:“唯一能有效测量代.原创 2020-12-07 14:33:56 · 256 阅读 · 0 评论 -
sentry磁盘占用过大如何清理历史数据
参考:https://www.phpmianshi.com/?id=1821、SENTRY数据软清理 (清理完不会释放磁盘,如果很长时间没有运行,清理时间会很长)#登录worker容器dockerexec-itsentry_onpremise_worker_1/bin/bash#保留多少天的数据,cleanup使用delete命令删除postgresql数据,但对于delete,update等操作,只是将对应行标志为DEAD,并没有真正释放磁盘空间sentrycleanup--...原创 2020-11-09 17:04:08 · 4097 阅读 · 2 评论 -
linux中后台进程管理利器supervisord
背景Linux的后台进程运行有好几种方法,例如nohup,screen等,但是,如果是一个服务程序,要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。当用supervisor监护进程时,被监护进程不能是守护进程,这是由于守护进程通常会在fork完子进程后就让父进程”结束生命”,也即由super原创 2020-11-04 18:03:08 · 334 阅读 · 0 评论 -
最近网上在讨论一段非常简短的代码,其方法让人落泪
最近网上在讨论一段非常简短的代码,不需要太多 JavaScript 背景也能看懂,但其方法让人落泪。网友点评:网友 @sim642我很欣赏 "true" === "true" 那一行。网友 @hearwa我很认可他注释提到的 Todo 任务,JavaScript 应当存成另外一个文件。网友 @goomymanTODO 是不是作用主要堵住后面人吐槽,“你不说我也知道现在做法不规范”你还见过哪些奇葩的代码?欢迎评论爆料...转载 2020-08-07 16:44:17 · 151 阅读 · 0 评论 -
nginx中request_time和upstream_response_time详解
参考:https://www.phpmianshi.com/?id=123背景最近监控报警有短暂的502,赶紧分析问题原因,查看nginx的access_log 发现短暂报警的request_time比较大,但是upstream_response_time有2个值,一个比较小,一个比较大,日志如下:request:GET/index/allHTTP/1.1request_time:30.049up_resp_time:0.015:30.033up_addr:11.11.1...原创 2020-07-15 20:12:47 · 2856 阅读 · 0 评论 -
linux中如何查看系统io使用情况
参考:https://phpmianshi.com/?id=114linux中查看IO的方法主要有下面几种方法:1. top %wa 的含义是等待输入输出的CPU时间百分比,这个数字越高说明越多的CPU资源在等待I/O权限top-18:38:17up13:37,2users,loadaverage:0.18,0.35,0.27Tasks:161total,1running,160sleeping,0stopped,0z...原创 2020-06-14 15:07:14 · 13291 阅读 · 0 评论 -
linux中cpu占用过高排查方法
参考:https://phpmianshi.com/?id=112CPU使用率查看top通过top -d 0.1可以缩短采样时间。-d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。查看多核CPUtop输入1就可以看到...原创 2020-06-11 10:13:30 · 754 阅读 · 0 评论 -
dnsmasq搭建DNS服务器详解
参考:https://www.phpmianshi.com/?id=101Dnsmasq 简介Dnsmasq 是一个轻量级的 DNS 缓存、DHCP、TFTP、PXE 服务器。作为域名解析服务器,dnsmasq 可以通过缓存 DNS 请求来提高对访问过域名的解析速度。作为 DHCP 服务器,Dnsmasq 可以用于为局域网电脑分配内网 IP 地址和提供路由。DNS 和 DHCP 两个功能可以同时或分别单独实现。Dnsmasq 的应用场景 1. 比如 Kubernetes 的 k...原创 2020-05-26 18:50:45 · 7211 阅读 · 1 评论 -
记一次laravel项目因session导致cpu过高的问题
参考:https://www.phpmianshi.com/?id=100问题起因:腾讯云监控CPU过高报警 10:20-10:28左右持续 百分之80以上。问题排查:1.查看php-fpm慢日志发现有大量如下日志:[26-May-202010:20:36][poolwww]pid7368script_filename=/data/nginx/webroot/simulation-strategy-20200519-203518-1fe2f...原创 2020-05-26 13:38:49 · 649 阅读 · 0 评论 -
如何使用sentry进行异常监控
参考:http://phpmianshi.com/?id=99系统架构中应用程序的监控非常重要。比如你是否遇到过这种问题:当用户向你抛出一个bug(或者说异常),而你却找不到异常出现的原因和时机,也很难去重现这种奇葩的事件,此时你有一种众里寻他千百度,那bug却不知在何处的感觉。所以,利用某种工具去实现系统的异常监控,方便我们及时查看结果,并且作出合理的处理,这对于每个架构师来说都是挺重要的。一、概念理解:1、异常与捕获 异常指的是在程序运行过程中发生的异常事件,通常是由外部问..原创 2020-05-25 14:38:17 · 2007 阅读 · 0 评论 -
分布式事务详解
参考:http://phpmianshi.com/?id=43事务定义简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。数据库本地事务数据库事务中的四大特性 ACIDA:原子性(Atomicity),一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。就像你买东西要么交钱收货一起都执行,原创 2020-05-18 16:45:31 · 112 阅读 · 0 评论