202201-04 go自定义包引入,报错包找不到的问题 NEW 背景从github下载了一个项目想运行下,发现找不到自己写的包,一直报错build command-line-arguments: cannot find module for path xxx目录结构stockIndicator indicator price.go &nb... Read More >
202201-03 livego介绍、安装、使用详解 NEW 前言写这篇文章主要是因为希望找到一个简单的方式实现直播功能,在度娘上找到livego(我平时写php和前端的,不懂golang),感觉安装部署都很方便,即使不懂golang的同学,只要有一定Linux和web后端开发知识都能搭建自己的直播服务。但是livego的文档的确比较少,然后对于我这个面向搜索引擎开发的菜鸟来说,连度娘也只找到为数不多的几篇相关博客文章,所以最后只能自己看GitHub的issue和反复测试趟坑,最后打算记录一下自己的趟坑过程也分享一下给各位小伙伴,希望对... Read More >
202201-02 什么是OBS(OBS直播推流操作步骤,看完就懂) NEW 什么是 OBS? Open Broadcaster Software 是一款好用的互联网流媒体直播内容输入作软件。 OBS 使用是否收费? 不收费,这个程序和它的源代码都是免费的。 OBS 都支持哪些操作系统? 支持 OS X、Windows、Linux 操作系统。适用于多种直播场景。满足大部分直播行为的操作需求。 一、前期准备 直播间布置 参考:直播间布置手册:https://www.yuque.com/docs/share/555b3... Read More >
202201-01 以太坊是什么挖矿机制 简介以太坊是一种基于区块链技术的智能合约平台,它允许开发者构建分散应用程序(dApps)和智能合约。为了确保以太坊网络的安全性和稳定性,以太坊采用了一种名为Proof of Work(PoW)的挖矿机制。PoWPoW是一种共识机制,它通过计算机的算力来验证交易和创建新的区块。在PoW中,计算机需要完成一定数量的计算,以便获得一个新的区块的权利。计算机完成计算后,它会将结果提交给网络,如果结果符合难度要求,则被接受,并且计算机会获得相应的奖励。以太坊的PoW挖矿机制与比特币的P... Read More >
202201-01 一篇文章搞清楚直播协议RTMP 说起RTMP协议,相信很多人都比较陌生,这个协议相对HTTP、HTTPS、TCP等我们常见的协议而言,我们在工作中确实较少接触它,但是对现在如火如荼的直播行业,RTMP是一个重要的协议,它在实时音视频场景中使用非常广泛,而且目前市占率很高。本文的主要内容是分析RTMP的协议,当然不是纯理论分析,这样没多大意思,还是结合实践抓包文件来具体分析,这样才能较好地理解RTMP的内涵。具体如何抓包见本文末尾的“Android抓包”模块。希... Read More >
202111-26 SSL单向认证和双向认证说明 SSL(Secure Sockets Layer,安全套接字协议)是为网络通信提供安全及数据完整性的一种安全协议。本文主要介绍 SSL 单向认证和双向认证。SSL 单向认证和双向认证的区别SSL 单向认证 无需客户端拥有证书,只需服务端拥有证书。SSL 双向认证 需要客户端和服务端双方都拥有证书。SSL 单向认证相对于 SSL 双向认证的认证过程,无需在服务端验证客户端证书、以及协商加密方案,服务端发送给客户端也是未加密的密码方案(并不影响 SSL 认证过程的安全性)。一般... Read More >
202111-25 linux crontab下关于使用date命令的坑 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的说明 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 nginx和php-fpm两种通信方式对比UnixSocket和TcpSocket 一:概念tcp socket允许通过网络进程之间的通信,也可以通过loopback进行本地进程之间通信。unix socket允许在本地运行的进程之间进行通信。二:理论分析unix socket减少了不必要的tcp开销,而tcp需要经过loopback,还要申请临时端口和tcp相关资源。但是,unix socket高并发时候不稳定,连接数爆发时,会产生大量的长时缓存,在没有面向连接协议的支撑下,大数据包可能会直接出错不返回异常。tcp这样的面向连接的协议,多少可以保... 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 >