202111-26 SSL单向认证和双向认证说明 NEW SSL(Secure Sockets Layer,安全套接字协议)是为网络通信提供安全及数据完整性的一种安全协议。本文主要介绍 SSL 单向认证和双向认证。SSL 单向认证和双向认证的区别SSL 单向认证 无需客户端拥有证书,只需服务端拥有证书。SSL 双向认证 需要客户端和服务端双方都拥有证书。SSL 单向认证相对于 SSL 双向认证的认证过程,无需在服务端验证客户端证书、以及协商加密方案,服务端发送给客户端也是未加密的密码方案(并不影响 SSL 认证过程的安全性)。一般... Read More >
202111-25 linux crontab下关于使用date命令的坑 NEW 1. date在crontab中的正确写法在测试环境中,一开发同事反馈自己设置的crontab不生效,定时任务如下:*/6 * * * * date >> /usr/local/log/log_$(date +%Y%m%d%H%M).txt咋一看,好像没什么问题。先按照思路来测试一下:直接在命令行中执行没有问题# date >> /usr/lo... Read More >
202111-24 CURL HTTP构造请求Header实现伪造来源IP的说明 NEW CURL HTTP构造请求Header实现伪造来源IP的说明伪造的只是X-FORWARDED-FOR和CLIENT-IP,REMOTE_ADDR伪造不了。$_SERVER['REMOTE_ADDR']是由nginx传递给php的参数,就代表了与当前nginx直接通信的客户端的 IP(是不能伪造的)PHP获取客户端IP,代理服务器IP,共有如下几类情况:一、没有使用代理服务器的情况:REMOTE_ADDR = 您的 IPHTTP_VIA = 没数值或不显示HTT... Read More >
202111-23 supervisorctl 非root用户调用权限最终原因 背景用supervisor来守护服务器程序, 但使用非root用户云调用supervisorctl来操作程序时, 总是提示权限问题[www@super-test ~]$ supervisorctl status error: <class 'PermissionError'>, [Errno 13] Permission denied: file:... Read More >
202111-22 oom-killer详解和实战 作为Linux下的程序员,有时不得不面对一个问题,那就是系统内存被用光了,这时当进程再向内核申请内存时,内核会怎么办呢?程序里面调用的malloc函数会返回null吗?为了处理内存不足时的问题,Linux内核发明了一种机制,叫OOM(Out Of Memory) killer,通过配置它可以控制内存不足时内核的行为。OOM killer当物理内存和交换空间都被用完时,如果还有进程来申请内存,内核将触发OOM killer,其行为如下:1.检查文件/proc/sys/vm/pa... Read More >
202111-21 线上服务器oom killer实战详解 背景最近一台线上定时任务服务器,经常不定期报错,经常是请求外部接口的时候报错了。分析单独测试没有问题,外部接口也正常响应,百思不得其解,于是根据发生报错的时间点查看系统日志,发现触发了系统的oom-killervi /var/log/messages Jun 28 17:30:06 super-task-cron kernel: php invoked oom-killer: gf... Read More >
202111-20 shell脚本实现秒级定时任务的方法 编写Shell脚本crontab.sh#!/bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/www/php/crontab/crontab.php') &nbs... Read More >
202111-19 shell中判断远程服务器中文件是否存在两种场景实战 判断一个文件的常见形式为if [ -f "/data/file.txt"];then echo "true" else echo "false" fi注意:1)中括号之间的空格;2)目录最好是绝对路径,在判断远程服务器中文件是否存在时尤为重要,因为集群之间有路径的变... Read More >
202111-18 nginx方向代理wss或ws 背景1、由于联调环境需要在内网或外网使用wss,这里使用Nginx作为代理实现ws或wss。2、WebSocket 在线测试: http://www.websocket-test.com/使用Nginx代理wsNginx配置如下server { listen 80; server_name ws.phpmians... Read More >
202111-17 linux实现时间同步有哪几种方法 简介Linux实现时间同步的方法的有两种,分别是:1、使用ntpdate从时间服务器来更新时间,不需要自己做任何配置;2、使用ntp来搭建自己的时间服务器。由于硬件的原因,机器或多或少的跟标准时间对不上,误差几秒到几分钟不等。对于服务器来说时间不准会有很多麻烦。例如支付的时候,无法下单,游戏无法登录等。接下来将在文章中为大家分享Linux系统中如何实现时间同步,希望对大家有所帮助方法一:用ntpdate从时间服务器更新时间如果linux系统没有ntpdate这个命令,可以输入... Read More >
202111-16 linux下追查线上问题常用命令 找出当前系统内存使用量较高的进程方法1:ps aux | head -1;ps aux|grep -v PID | sort -rnk4 | head -10 方法2:top 然后 大写MM – 以内存占用率大小的顺序排列进程列表VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:residen... Read More >
202111-15 实例内存使用率过高 现象描述Linux 云服务器实例出现由内存问题引发的故障。例如,系统内部服务响应速度变慢、服务器登录不上、系统触发 OOM(Out Of Memory)等。可能原因可能是实例内存使用率过高等问题引起。通常情况下当实例内存使用率持续高于90%时,可判断为实例内存使用率过高。排查思路参考 处理步骤,判断问题是否由内存使用率过高引起。参考 其他内存问题典型案例分析,定位问题原因。处理步骤参考 相关操作,查看内存使用率是否过高。内存使用率过高,则执行下一步。内存使用率正常,则请参考... Read More >
202111-15 linux内存回收之drop cache Linux有自己完备的一套内存回收机制,并不需要人为的干预,但它同时也提供了一种手动释放的手段,可以让我们在调试的时候使用,方法是通过设置"/proc/sys/vm/drop_cache"参数。这个参数可接收3个数字的输入,分别是1, 2和3,写入1代表只释放page cache的可回收部分,写入2代表只释放slab cache中的可回收部分。可回收的slab cache是指在调用"kmem_cache_create"函数向slab分配... Read More >
202111-14 实例内存未耗尽时触发 Out Of Memory 现象描述Linux 云服务器在内存使用率未占满的情况下触发了 OOM(Out Of Memory)。如下图所示:可能原因可能是由系统可用内存低于 min_free_kbytes 值导致。min_free_kbytes 值表示强制 Linux 系统最低保留的空闲内存(Kbytes),如果系统可用内存低于设定的 min_free_kbytes 值,则默认系统启动 oom-killer 或强制重启。具体行为由内核参数 vm.pa... Read More >
202111-13 TCP半连接队列满了会发生什么?又该如何应对 上一篇我们讲了全连接队列满的情况,有没看过的小伙伴可以先看上一篇:/?id=492下面我们实战下半连接队列慢的情况实战 - TCP 半连接队列溢出 如何查看 TCP 半连接队列长度?很遗憾,TCP 半连接队列长度的长度,没有像全连接队列那样可以用 ss 命令查看。但是我们可以抓住 TCP 半连接的特点,就是服务端处于 SYN_RECV 状态的 TCP 连接,就是在 TCP 半连接队列。于是,我们可以使用如下命令计算当前 TC... Read More >
202111-13 TCP全链接队列满的问题分析之net.core.somaxconn详解 背景最近控制台查看腾讯云服务器状态时,发现一个异常情况提示如下:该实例最近12小时内在2021-11-13 14:48出现过TCP全链接队列满的情况,为避免成为业务瓶颈,建议您检查业务健康情况。可参考文档:点击查看TCP 全连接队列满TCP 全连接队列的长度取 net.core.somaxconn 及业务进程调用 listen 时传入的 backlog 参数,两者中的较小值。TCP 全连接队列足最大值取决于 somaxconn 和 backlog 之间的最... Read More >
202111-13 TCP半连接队列和全连接队列满了会发生什么?又该如何应对 提纲什么是 TCP 半连接队列和全连接队列? 在 TCP 三次握手的时候,Linux 内核会维护两个队列,分别是: 半连接队列,也称 SYN 队列; 全连接队列,也称 accepet 队列;服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,内核会把连接从半连接队列移除,然... Read More >
202111-12 nginx中http转https的几种方式 第一种方式使用return 301如下:server { listen 80; server_name www.phpmianshi.com; return 301 https://$http_host$request_uri; access_log of... Read More >
202110-23 linux中入侵类问题排查思路 一、检查隐藏帐户及弱口令检查服务器系统及应用帐户是否存在 弱口令:检查说明:检查管理员帐户、数据库帐户、网站后台管理员帐户等密码设置是否较为简单,简单的密码很容易被黑客破解。解决方法:以管理员权限登录系统或应用程序后台,修改为复杂的密码。使用last命令查看下服务器近期登录的帐户记录,确认是否有可疑 IP 登录过机器:检查说明:攻击者或者恶意软件往往会往系统中注入隐藏的系统帐户实施提权或其他破坏性的攻击。解决方法:检查发现有可疑用户时,可使用命令usermod -L... Read More >
202110-22 linux中安全加固几条建议 背景本文以CentOS7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1) 设置复杂密码服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂密码 ,也可使用密码生成器自动生成复杂密码,这里给您一个链接参考:https://suijimimashengcheng.51240.com/echo "root:wgr1TDs2Mnx0XuAv" | chpasswd2) 设置密码策略修改文件/etc/logi... Read More >