Nginx 中 `$request_uri` 参数与哈希负载均衡
在 Nginx 的负载均衡配置中,使用请求相关变量可以实现更灵活的流量管理。其中,$request_uri 是一个非常重要的变量,可以用于哈希负载均衡。本文将深入探讨 $request_uri 的用法及其在负载均衡中的应用。 什么是 $request_uri?$request_uri 是 Nginx 提供的一个内置变量,它包含了客户端请求的完整 URI,包括查询参数。这使得该变量在负载均衡时非常有用,因为它可以帮助我们基于请求的路径和参数将流量分配到不同的后端服务器。 $request_uri 的结构 示例请求: GET /path/to/resource?param=value HTTP/1.1 对应的 $request_uri 值: /path/to/resource?param=value 哈希负载均衡哈希负载均衡根据请求的某一部分(如 URI、IP 地址等)计算出一个哈希值,从而确定请求应该被转发到哪个后端服务器。这种方式可以确保同一请求总是被转发到同一台服务器,从而保持会话的一致性。 使用 $request_uri 的哈希负载均衡配置示例以下是一个使用 $requ...
Nginx 简单双机热备:`backup` 参数的使用
在现代 Web 应用架构中,高可用性是一个重要的目标。通过使用 Nginx 的双机热备功能,可以确保在主服务器出现故障时,流量能够自动切换到备份服务器。本文将介绍 Nginx 中 backup 参数的使用方法,帮助你实现简单的双机热备。 什么是 backup 参数?在 Nginx 的负载均衡配置中,backup 参数用于标记一个服务器为备份服务器。备份服务器在主服务器不可用时,才会接收请求。通过这种方式,可以有效提高应用的可用性和容错能力。 基本配置以下是一个简单的 Nginx 配置示例,展示了如何使用 backup 参数进行双机热备: http { upstream backend { server primary.example.com; # 主服务器 server backup.example.com backup; # 备份服务器 } server { listen 80; location / { proxy_pass...
PHP 雪花算法收藏
需要注意的 $twepoch 变量一定要在项目初始化时重置为当前最新时间该方法 存在一定问题使用3年左右 会存在 - 符号 ### 雪花算法class SnowFlake{ private static $lastTimestamp = 0; private static $lastSequence = 0; private static $sequenceMask = 4095; // 项目初始化时间毫秒戳 private static $twepoch = 1715236393000; static function randStr($length) { return substr(str_shuffle("abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ23456789"), 0, $length); } static function randNumStr($length) ...
Awk 字符串截取实例
Awk 是一个强大的文本处理工具,广泛用于数据提取和报告生成。在处理文本数据时,字符串截取是一个常见需求。本文将介绍如何使用 Awk 进行字符串截取,并提供一些实际示例。 Awk 简介Awk 是一种编程语言,主要用于处理文本文件。它通过模式匹配和操作来处理输入行,支持多种字符串操作,包括截取、替换和连接等。 字符串截取基本语法在 Awk 中,可以使用 substr() 函数进行字符串截取。其基本语法如下: substr(string, start, length) string: 要截取的字符串。 start: 截取的起始位置(从 1 开始)。 length: 可选,截取的长度。如果不指定,则会截取到字符串的末尾。 示例 1: 从字符串中截取子串假设我们有一个包含姓名的文本文件 names.txt,内容如下: John DoeJane SmithAlice JohnsonBob Brown 我们希望从每个姓名中提取姓氏。可以使用以下 Awk 命令: awk '{print substr($0, index($0, " ") + ...
MySQL 事务锁等待超时时间
在使用 MySQL 数据库进行事务处理时,锁的管理是至关重要的。锁可以确保数据的一致性和完整性,但在高并发环境下,锁等待可能会导致性能下降甚至死锁。因此,了解 MySQL 事务的锁等待超时时间及其配置方法,能够帮助开发者更好地管理数据库操作。 什么是锁等待?锁等待是指某个事务请求一个锁,但该锁被其他事务持有,导致当前事务进入等待状态。MySQL 提供了机制来处理这种情况,以避免长时间的等待和潜在的死锁。 锁等待超时时间MySQL 中的锁等待超时时间是指一个事务在尝试获取锁时,如果等待时间超过设定的阈值,则会自动放弃请求并返回错误。这个超时时间可以通过系统变量 innodb_lock_wait_timeout 来配置。 默认值 MySQL 的默认超时时间为 50 秒。即,如果一个事务在等待锁时超过 50 秒,MySQL 会返回一个错误。 配置超时时间你可以通过以下 SQL 语句来查看当前的锁等待超时时间: SHOW VARIABLES LIKE 'innodb_lock_wait_timeout'; 要修改该超时时间,可以使用如下语句: SET GLOB...
Swoole 日志 部分代码
/** * @desc work进程内日志 仅限work 进程内使用 * @author lbf * @param $msg * @param string $name *------------------------------------------------------ */public static function Wlog($msg, $name = Log::MATCH){ if (!Main::WRITE_DEBUG_LOG && $name == Log::DEBUG) return; $name = $name == Log::DEBUG ? Log::MATCH : $name; $name = $name == Log::SQL ? Log::MATCH : $name; $str = ''; if (is_array($msg)) { foreach ($msg as $key => $val) { if (i...
PHP 和 Nginx 实现实时输出的方法
在 Web 开发中,实时输出(或称为流式输出)允许服务器逐步发送数据到客户端,而不是一次性发送所有内容。这对于长时间运行的 PHP 脚本(例如处理文件上传、实时数据生成等)非常有用。本文将介绍如何使用 PHP 和 Nginx 实现实时输出。 为什么使用实时输出? 提升用户体验: 用户可以在处理时间较长的请求时看到进度。 减少服务器负载: 逐步输出可以减少内存使用,特别是在处理大数据集时。 保持连接: 对于长时间运行的脚本,可以保持与客户端的连接,避免超时。 实现方法下面是实现 PHP 和 Nginx 实时输出的步骤。 1. 配置 Nginx首先,确保 Nginx 配置文件支持 HTTP/1.1,以便处理持久连接。你可以在 Nginx 的配置文件中添加以下设置: http { ... sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; ...} 2. 创建 PHP 脚本在 PHP 脚本中,我们将使用 ob_flush() 和 fl...
查看网络命令 查看DNS
在网络管理和故障排除中,DNS(域名系统)是一个至关重要的组成部分。本文将介绍如何使用各种网络命令查看 DNS 记录,帮助你更好地理解和管理网络。 什么是 DNS?DNS 是将域名转换为 IP 地址的系统,使用户能够使用易于记忆的域名(如 example.com)访问网站,而无需记住复杂的数字 IP 地址(如 192.0.2.1)。DNS 记录存储在 DNS 服务器上,主要包括 A 记录、CNAME 记录、MX 记录等。 常用的 DNS 查询命令1. nslookupnslookup 是一个用于查询 DNS 记录的命令行工具。它可以在 Windows、macOS 和 Linux 系统上使用。 使用示例nslookup example.com 该命令将返回 example.com 的 A 记录及其对应的 IP 地址。 查询特定记录类型要查询特定类型的 DNS 记录,例如 MX(邮件交换)记录,可以使用以下命令: nslookup -query=MX example.com 2. digdig(Domain Information Groper)是另一个强大的 DNS 查询工...
报错 unix:///tmp/supervisor.sock no such file
在使用supervisor进行进程管理时,启动 supervisorctl,启动时候报错 unix:///tmp/supervisor.sock no such file 然后网上搜了一堆也没解决问题,后来去看supervisor.log,发现supervisord一启动,过了几秒就自动to die了。 后来在stackOverFlow看到了这个问题尝试去修改了下/etc/supervisord.conf中的 [unix_http_server]file=/tmp/supervisor.sock ; (the path to the socket file)chmod=0700 ; socket file mode (default 0700)chown=nobody:nogroup ; socket file uid:gid ownerusername=root ; (default is no username (open server))password=root ;...
安装 ab 和 htpasswd
yum install httpd-tools 完成后,就可以直接运行ab # which ab/usr/bin/ab# rpm -qf /usr/bin/abhttpd-tools-2.2.15-47.el6.centos.1.x86_64# which htpasswd/usr/bin/htpasswd 压测方法,一定要指定页面名 /usr/bin/ab -n 3000 -c 3000 https://www.baidu.com/index.php 压测之前先执行下面命令 ulimit -n 65535



