网站出现白屏、接口报错或加载异常变慢时,与其反复刷新页面或直接重启服务,不如顺着一次完整请求的流转路径,从外到内逐层定位问题。通常的做法是:先确认网络链路和域名解析是否正常,再检查服务器资源与应用运行状态,最后评估数据库配置与查询性能。按这个顺序排查,能明显缩短故障修复时间。
遇到网站无法访问,先别急着登录服务器查进程,而是要判断故障发生在用户端还是服务端。一个快速的办法是切换网络测试,比如用手机流量访问站点。如果切换后网站恢复正常,多半是本地网络DNS缓存或路由器设置出了问题;若只有特定地区或某家运营商的用户打不开,就要留意链路拥堵或DNS解析未在全球生效的情况。
在本地终端执行nslookup 你的域名,将返回的IP地址与服务器真实公网地址做比对。如果解析结果为空,或指向了已废弃的旧IP,说明域名管理后台的A记录或CNAME配置有改动。要注意,修改DNS记录后,全球生效需要等待时间,短则几分钟,长则数小时。若站点接入了CDN,还应检查CDN控制台的节点状态,排除因回源失败导致部分地区访问异常。
服务器能ping通但页面打不开,多数是端口未放行。云服务商的安全组规则和服务器本地防火墙策略都需要同时开放80和443端口。在本机执行telnet 服务器公网IP 443,如果连接超时,基本可以判定是防火墙拦截或上游运营商限制。此时先检查云控制台的安全组入站规则,再排查服务器内部的iptables或firewalld配置。
页面响应迟缓或请求大量排队超时,通常和服务器资源耗尽有关。CPU持续满载、内存不足、磁盘空间告急或带宽被占满,都会直接影响服务响应速度。登录服务器后,依次执行top查看系统负载与CPU占用、free -h确认内存剩余量、df -h检查磁盘使用率,这一组命令可以快速掌握服务器整体运行状况。
在top界面按P键,让进程按CPU使用率降序排列,逐一查看排名靠前的程序。常见异常包括:被入侵后植入的挖矿程序、数据库缺索引导致的慢查询堆积,以及恶意爬虫的频繁抓取。结合Nginx或Apache的访问日志,可以确认这些异常请求的来源IP和具体URL路径。比如发现某个接口每秒被调用数百次,可通过临时封禁来源IP或配置请求频率限制来缓解服务器压力。
磁盘使用率超过80%就该重视了。会话文件、运行日志或临时目录写满后,应用无法正常写入缓存,通常会直接返回500错误。清理过期日志和临时文件通常能快速释放空间。内存方面,若free -h显示swap交换分区读写非常频繁,说明物理内存已严重不足,系统不断在内存与磁盘间换页,整体性能会明显下降。此时需优先优化占用内存的应用,或考虑升级实例规格。
排除网络和系统资源问题后,重点转向应用本身。确认Nginx、PHP-FPM、Tomcat或Node.js等进程是否仍在运行,监听端口是否正常。通过查看应用日志定位报错信息,多数情况下日志会直接给出异常原因,例如配置文件语法错误、依赖服务连接失败或代码异常等。
执行systemctl status nginx或ps aux | grep java查看服务进程是否存在。若进程已退出,尝试启动并观察是否反复崩溃。再用netstat -tlnp确认服务监听端口是否与实际配置一致。若端口未监听,通常是启动失败或配置被改动,需查看错误日志进一步确认。
应用日志路径因框架而异,常见位置如/var/log/nginx/error.log或logs/app.log。重点查看最近时间段的ERROR或WARN级别记录。例如日志中出现Connection refused,说明下游依赖服务(如Redis或数据库)未正常启动;出现Permission denied,则可能是日志目录或临时文件权限被误改。修复后建议测试一次完整请求链路,确认问题是否彻底解决。
当网站部分功能可用、但涉及数据读取的页面报错或超时时,问题往往在数据库层面。数据库连接数被打满、慢查询堆积或表锁冲突,都会拖慢接口响应。登录数据库执行show processlist;可以查看当前所有连接与正在执行的语句,快速找出异常来源。
数据库最大连接数配置过低时,并发一高就会出现Too many connections错误。通过show variables like '%max_connections%';查看当前上限,结合服务器内存适当调大。同时排查是否有应用未释放连接,例如连接池配置过小或代码中忘记释放资源。避免盲目调大连接数,否则容易拖垮数据库服务器的内存。
打开慢查询日志,例如MySQL可设置slow_query_log=ON并设置阈值long_query_time=2,周期内即可收集到执行时间超过2秒的SQL语句。对这些语句使用EXPLAIN分析执行计划,确认是否全表扫描、是否命中索引。常见的优化做法是:为大表的高频查询字段添加索引,或拆分过于复杂的关联查询。数据库配置调整后,建议先在测试环境验证,再部署到生产环境。
这种情况通常与本地网络环境有关,可能是电脑DNS缓存了旧的解析记录,或路由器配置异常。可以尝试在命令行执行ipconfig/flushdns(Windows)或重启路由器。若问题持续,可手动将DNS修改为公共地址如114.114.114.114再试。
先执行top并按CPU排序,找到具体进程。若不是业务进程,很可能是被入侵植入了挖矿程序。建议立刻断开外网,查杀木马,修改所有账号密码,并检查系统的定时任务和启动项是否有异常。修复后再加强防火墙规则和外网访问控制。
说明问题根源未被消除,重启只是临时缓解。需要从日志中找规律,比如故障发生的时间点是否与定时任务、大量并发请求或日志轮转重合。同时检查是否因磁盘空间或内存不足导致服务被动重启,针对性调整资源或优化代码,避免相同问题反复出现。
网站故障排查的核心思路是从外到内逐层缩小范围:先验证用户端到服务器的网络链路,再查看系统资源与应用进程,最后深入数据库配置和执行计划。建议平时就建立一份固定的排查清单,记录各服务器常用命令、日志路径和正常状态下的基准值,故障发生时可以快速对比定位。每一次故障解决后,将根因和修复步骤记入文档,逐步积累成团队内部的运维知识库,能显著降低未来同类问题的处理时间。