2025-web集群-问题总结

不求问题越来越少,只求问题可以找到答案。

只代表当前节点,持续更新!!!!

**问题或大或小,但既然产生了疑问,并且能花时间解决的,都是好的问题宝宝。**哈哈~

1.lsyncd 服务启动失败

lsyncd 服务启动失败,关键错误信息如下: Error: failure getting absolute ... Error: Cannot access source dire...l这说明 lsyncd 无法访问配置文件中指定的源目录(source directory)。 解决方法删除无效的 sync 块,只保留你需要的那个 正确的 /etc/lsyncd.conf 应该是 干净、单一、无多余内容 的 官方示例文件通常包含多个 sync 块用于演示,但实际使用时只能保留你需要的那一个。

2.reload和restart的区别

重载 :在不停止 Nginx 服务的前提下,重新加载配置文件。在整个过程中,Nginx 始终保持对外提供服务,不会中断现有连接(平滑升级/重载)。 重启 :完全停止 Nginx 进程,然后重新启动。服务会短暂中断,正在处理的请求可能被丢弃或失败。日常修改配置后,优先使用 reload。

3.rpm包,源码包,二进制包区别

RPM 包 :RPM 包本质上是二进制包的一种封装格式,已编译好的二进制程序,可直接安装运行。自动依赖。企业部署,系统集成。

源码包 :原始程序代码,需手动编译。开发,调试,定制优化。

二进制包已编译好的可执行程序。快速试用、通用部署。

4.rsync和nfs

rsync 主要用于在本地与远程系统之间高效地同步文件和目录,推(push)或拉(pull),基于客户端-服务器或直接通过 SSH 连接。

NFS 允许客户端像访问本地文件一样访问远程服务器上的文件。服务端导出目录,客户端挂载为本地路径,实现"远程磁盘"。

混合架构中的角色互补 :NFS 用于实时共享 (如多台 Web 服务器共用静态资源);rsync 用于离线备份或灾备同步(如每天凌晨将 NFS 数据同步到异地)。

rsync ≠ NFS:一个是同步工具,一个是文件系统协议。NFS 提供"实时共享",rsync 提供"可靠同步"。

5.chown -R 不会改变未来新建文件的属主。

chown -R 只影响执行命令时已经存在的文件和目录。 后续新创建的文件,其属主由创建者(即当前用户) 决定。

6.nfs中sync和async区别

sync :NFS 服务器在向客户端返回写操作成功之前,必须将数据真正写入到磁盘(或稳定的存储介质)。默认,性能较低。 async:NFS 服务器在收到写请求后,先将数据缓存在内存中,立即向客户端返回成功,稍后再异步写入磁盘。性能较高,但有数据丢失风险。

7.xargs加与不加

当你需要把"一串文本"作为"命令的参数"时,就用 xargs。 例如:find 找到一堆文件,想 chmod 它们 → 用 xargs;grep 输出匹配的文件名,想 cat 它们 → 用 xargs;从文件读取行,作为参数传给某个程序 → 用 xargs。

命令本身能直接从 stdin 读取内容,或不需要把输入当作参数时,就不需要 xargs。

命令本身支持文件参数时,才考虑 xargs;否则可能不需要。

sort、wc、head等命令可以直接读 stdin,通常不需要 xargs。

8.http1.0/1.1/2.0区别

HTTP/1.0:每个请求/响应都需要建立一个新的 TCP 连接。多个资源需多次建立连接,效率低。

HTTP/1.1 :一个 TCP 连接可复用多个请求/响应 ,允许客户端在未收到响应前发送多个请求。(有限并行)HTTP/2 :将 HTTP 消息拆分为二进制帧,提高解析效率。多个请求/响应可在同一个 TCP 连接上并行传输(完全并行)

9.osi封装过程总结

封装如图解封装过程(接收端)接收端执行相反操作:从物理层开始,逐层剥离头部(和尾部),直到将原始数据交付给目标应用程序。

10.web架构优化

静态资源 是指内容在服务器上固定不变的文件,这些资源不需要后端程序处理,直接返回文件内容即可。 动态请求需要后端应用进行逻辑处理。 动静分离 是一种架构优化策略,利用 Nginx 高效处理静态内容,释放后端资源。 在 Web 架构中,Nginx 通常作为反向代理服务器:客户端以为自己在直接访问服务器,实际上请求被代理服务器转发到后端真实服务器。既能直接响应静态请求,又能将动态请求透明地转发给后端。

11.应用服务器需要动态扩展的本质

应用服务一旦构成集群,确实通常需要 Nginx(或其他负载均衡器)具备反向代理功能,将客户端的动态请求分发到后端多个应用服务器实例上。而当集群规模扩大或业务负载变化时,就会产生对动态扩展的需求。 应对不可预测的流量变化(弹性伸缩); 保障高可用与容错能力; 优化资源成本与运维效率。

12.hosts文件作用

在 DNS(域名系统)查询之前被系统优先使用,具有较高的解析优先级 。 文件位置:Windows:C:\Windows\System32\drivers\etc\hosts

Linux / macOS / Unix/etc/hosts主要作用 :当你在浏览器或其他网络程序中输入一个域名(如 http://www.example.com)时,系统会首先检查 hosts 文件中是否有对应的 IP 地址映射 。如果有,就直接使用该 IP,不再向 DNS 服务器发起查询。 通过将某些域名指向 127.0.0.1(本地回环地址)或 0.0.0.0,可以阻止程序访问这些域名。常用于屏蔽广告、跟踪脚本或恶意网站。 Web 开发中,常通过修改 hosts 文件将自定义域名(如 local.test)指向本地服务器(如 127.0.0.1),方便在本地模拟多域名环境,而无需配置 DNS。

13.后端程序连接数据库调用的是哪个协议

MySQL 协议(基于 TCP/IP 的自定义二进制协议) MongoDB Wire Protocol(基于 TCP 的二进制协议) RESP(REdis Serialization Protocol) IP(网络层):负责将数据包从源地址路由到目标地址。

TCP(传输层):提供可靠的、面向连接的、有序的数据传输服务。 数据库协议是应用层协议,用于定义客户端和数据库服务器之间如何交换命令、数据和状态信息。 "基于 TCP/IP 的数据库协议" = 在 TCP/IP 网络之上运行的、专用于数据库通信的应用层协议。

14.Mariadb和MySQL区别

MySQL :商业生态成熟,功能全面,适合需要 Oracle 支持或使用云托管服务(如 AWS RDS、Google Cloud SQL)的企业。 MariaDB :开源纯粹,创新迅速,适合追求自由、高并发或需要特殊存储引擎的场景。 MySQL:社区版:GPLv2(开源)企业版:商业许可(闭源功能)

MariaDB:始终采用 GPLv2,完全开源,社区驱动,无闭源版本。

15. .repo 文件格式

YUM 的 .repo 文件对格式要求比较严格,尤其是 不能在等号 = 两边加空格。 YUM 解析器无法处理 key = value 中等号两边有空格的情况,必须写成 key=value(无空格)。

16.yum本地安装

将包含rpm包的压缩包wget/rz下载至本地,解压unzip,yum loaclinstall +*.rpm即可。

17.如何理解随机端口占用问题

指在程序运行过程中,系统自动分配的临时端口(也称为随机端口)被意外占用 ,导致网络通信失败、连接冲突或程序异常。 在 TCP/UDP 通信中,客户端发起连接时通常不指定本地端口号,而是由操作系统 从一个预定义的范围(如 Linux 默认是 32768--60999)中自动分配一个未被使用的端口 ,这个端口就是"随机端口"。 如何解决或缓解? 扩大随机端口范围; 启用端口复用(谨慎使用); 服务端应使用固定端口(如 8080、9090),不要使用 32768--60999 范围内的端口。

18.查域名IP

Windows : 打开 PowerShell 或 CMD,执行 nslookup http://example.com Linux / macOS : dig http://example.com +short # 仅返回 IP dig http://example.com +noall +answer # 显示完整 A 记录 host http://example.com # 更简洁的替代

19.为什么使用ipconfig和curhttp://4.ipw.cn查出来的地址不同

ipconfig 看到的是你局域网(LAN)的内网 IP ; curl http://4.ipw.cn/看到的是你公网(WAN)的外网 IP 。 你本地看到的是"门牌号",而网上看到的是"大楼地址"。 # 查询本机外网IPv4地址curl http://4.ipw.cn/ # 查询本机外网IPv6地址curlhttp://6.ipw.cn/ # 测试网络是IPv4还是IPv6访问优先(访问IPv4/IPv6双栈站点,如果返回IPv6地址,则IPv6访问优先)curlhttp://test.ipw.cn/

20.10.0.0.1/32和10.0.0.1/24区别

10.0.0.1/32子网掩码 :255.255.255.255含义:只包含 一个 IP 地址,即 10.0.0.1 本身可用主机数:1(就是它自己) 10.0.0.1/24子网掩码:255.255.255.0含义:代表整个 10.0.0.0/24 网络,虽然写的是 10.0.0.1/24,但实际网络范围是从 10.0.0.0 到 10.0.0.255。可用主机数:254(10.0.0.1 到 10.0.0.254,通常 10.0.0.0 和 10.0.0.255 保留)

21.innodb和myisam区别

MySQL 5.5 之前:默认是 MyISAM。 MySQL 5.5 及以后:默认是 InnoDB。

22.png和jpeg格式区别

PNG :无损压缩,适合图像质量要求高、需要透明背景 的场景。 JPEG :有损压缩,适合照片类图像,文件更小,但不支持透明。 JPEG/JPG 适合"照片级"连续色调图像,追求体积

PNG 适合"图形类"大面积纯色、需要透明或无损保留细节的场景,追求质量

23.du 和df区别

du(disk usage) 用于统计指定目录或文件所占用的磁盘空间大小。 针对具体目录或文件(如 du -sh /home)。 不包含文件系统元数据。

df(disk free) 用于显示文件系统的整体磁盘使用情况,包括总空间、已用空间、可用空间和挂载点等信息。 针对整个文件系统/挂载点(如 df -h /home 显示 /home 所在分区的信息)。 显示的是整个文件系统的使用情况,包括元数据占用的空间。

24.数据库远程用户如何配置

GRANT ALL PRIVILEGES ON . TO 'remote_user'@'%'; FLUSH PRIVILEGES; '%' 表示允许从任何主机连接。也可以指定具体 IP,如 'remote_user'@'192.168.1.100'。 重启systemctl restart mysql

25.grep -R

用于递归地在指定目录及其所有子目录中搜索匹配特定模式的文本。

26.+/与不加/差异很大

rsync 同步推拉时

27.nfs授权

由于节点推送数据造成权限变化,必须在推送后重新登录nfs授权

28.挂载mount 使用

将源挂载到目标 目标作为源的入口

29."8080"默认页面

默认情况下,Nginx 的 proxy_pass不会自动传递原始 Host 头 ,而是使用 proxy_pass 中的地址作为 Host。 解决方案:显式设置 Host 头 proxy_set_header Host $host;

30.同端口,按顺序响应

ll /etc/nginx/conf.d/ 都是80端口访问某个网站时会优先加载顺序排在前面的 解决方案:添加default_server/在 proxy01 的静态资源 location 中,添加 Host 头传递; 例:listen 80 default_server;

OR:gzip其他conf文件,适用于只运行一个站点时。

31.看不到代理与服务端的数据?

Wireshark(或任何抓包工具)只能捕获流经当前主机网卡的数据包 。 IP 层"在同一网段" ≠ 数据链路层(以太网)流量会广播给所有人。 只要用的是交换机,默认就不会让你看到别人通信。 唯一可靠方式:在代理服务器上抓包。

32.正向代理和反向代理区别

向代理是"代理客户端 ", 向代理是"代理服务器 "。 正向代理代理客户端的请求,代表客户端向目标服务器发起请求。客户端(隐藏客户端身份 ) 反向代理代理服务器端的响应,代表服务器接收客户端请求并转发给后端服务器服务器(隐藏服务器身份

33.负载均衡中轮询和 IP Hash 区别

轮询原理:按顺序将请求依次分发给后端服务器

例如,有3台服务器 A、B、C,那么请求1→A,请求2→B,请求3→C,请求4→A,以此类推。IP Hash原理:根据客户端的 IP 地址进行哈希计算,将同一个 IP 的请求始终分发到同一台后端服务器。

34.为什么可能导致所有请求打到同一节点?

IPv4 仅使用前三个字节 ,所有用户请求被调度到同一后端节点,造成负载不均。

ip_hash 指令用于 upstream 块中,启用基于客户端 IP 的负载均衡策略。

哈希键(Key): 对 IPv4:仅使用 C 类网络地址,即 IP 的前三个字节(例如 192.168.1.x 中的 192.168.1)。 对 IPv6:使用整个地址进行哈希。 目的:确保来自同一客户端(或同一 C 类网段) 的请求始终被转发到同一台后端服务器(会话保持)。

35.网络地址分类

私有地址范围 (用于内网,不可在公网路由): A类:10.0.0.0 -- 10.255.255.255 B类:172.16.0.0 -- 172.31.255.255 C类:192.168.0.0 -- 192.168.255.255 A类地址 :默认子网掩码:255.0.0.0(即 /8 );网络位:第一个字节(8位),其中最高位固定为 0 ;主机位:后三个字节(24位)。 B类地址 :网络位:前两个字节(16位 ),最高两位为 10;主机位:后两个字节(16位);默认子网掩码:255.255.0.0(即 /16)。 C类地址 :网络位:前三个字节(24位),最高三位为 110;主机位:最后一个字节(8位);默认子网掩码:255.255.255.0(即 /24)。

36.session持久化和session共享的区别

Session 持久化 是指将用户的会话数据保存到持久化存储介质 (如数据库、文件系统、Redis 等)中,以防止服务重启或进程崩溃导致会话数据丢失 。 目的:防止会话数据丢失:即使 Web 服务器重启,用户仍能保持登录状态。

提升可靠性 :确保系统故障后用户无需重新登录。Session 共享是指在多个服务器实例或服务节点之间共享同一个用户的会话数据,使得用户无论访问哪个实例,都能获得一致的会话状态。 目的:支持负载均衡和水平扩展:用户请求可以被任意后端服务器处理,而不会因 Session 不一致导致错误。实现高可用和无状态服务架构。

37.无法建立 SSL 连接。

wget 在尝试通过 HTTPS 下载文件 时,无法验证服务器的 SSL 证书,或者系统缺少必要的 CA 证书、OpenSSL 版本过旧、时间不正确等原因。 解决方案(临时):使用 curl 替代 (有时 curl 的 SSL 行为更宽容)优先使用 curl(在旧系统上往往表现更好); 如果必须用 wget,加 --no-check-certificate。 长期解决:升级 wget / OpenSSL

38.Nginx 配置中if 语句的语法格式不正确

在 Nginx 配置中,if 指令 必须在其前后加上空格,否则 Nginx 会将其视为一个整体指令名,而这不是一个合法的指令,从而报错。

Nginx 官方文档明确指出 if 有陷阱

if块内的proxy_pass并不会完全覆盖外层的proxy_pass ,而且if在location中使用proxy_pass是不推荐的做法。 避免在 location / 中使用 if 做 proxy_passNginx 的 if 在 location 中不是"编程 if",它会和其他指令混合执行,导致不可预期行为。

39.页面空白

PHP 默认不启用短标签 <?,而是要求使用完整标签 <?php。 使用了未启用的短标签 <?,导致 PHP 代码未被解析,页面空白。

相关推荐
会飞的小妖3 小时前
个人博客系统(十一、前端-简短的配置)
前端
念念不忘 必有回响4 小时前
nginx前端部署与Vite环境变量配置指南
前端·nginx·vite
JIngJaneIL4 小时前
篮球论坛|基于SprinBoot+vue的篮球论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·篮球论坛系统
程序猿阿伟6 小时前
《首屏加载优化手册:Vue3+Element Plus项目提速的技术细节》
前端·javascript·vue.js
一只叫煤球的猫6 小时前
MySQL 索引的 “最左前缀原则”,用查字典的例子讲透
数据库·mysql·性能优化
一只小bit7 小时前
MySQL常用内置函数整理:提高你的查询效率
数据库·mysql·数据完整性·表约束
fruge8 小时前
Vue Pinia 状态管理实战指南
前端·vue.js·ubuntu
sean8 小时前
开发一个自己的 claude code
前端·后端·ai编程