Linux 磁盘I/O高占用进程排查指南:从定位到分析的完整流程

在Linux服务器运维工作中,磁盘I/O瓶颈是导致系统性能下降的常见原因之一。当服务器出现响应缓慢、应用卡顿等问题时,及时定位并解决高I/O占用进程就显得尤为重要。本文将从核心思路出发,通过“确认问题-定位磁盘-锁定进程-深入分析”四个步骤,详细介绍Linux下磁盘I/O高占用进程的排查方法,帮助运维人员高效解决磁盘I/O相关问题。

一、排查核心思路

磁盘I/O排查需遵循“由全局到局部、由表面到深层”的逻辑,避免盲目定位。核心流程可分为四步:

  1. 确认问题:先判断性能瓶颈是否真的在磁盘I/O,而非CPU或内存。
  2. 全局视角:找到压力过大的磁盘或分区,缩小排查范围。
  3. 进程视角:定位对目标磁盘进行大量读写操作的具体进程。
  4. 深入分析:挖掘高I/O进程的具体行为(如读写文件、系统调用等),为后续优化提供依据。

二、第1步:确认全局磁盘I/O状况

首先需要通过工具确认是否存在磁盘I/O瓶颈,并定位压力最高的磁盘。这里首选iostat工具(来自sysstat包),它能直观展示磁盘的读写速率、利用率等关键指标。

1.1 安装sysstat(含iostat工具)

不同Linux发行版的安装命令略有差异:

  • Ubuntu/Debian系统
    sudo apt update && sudo apt install sysstat
    
  • CentOS/RHEL/Fedora系统
    sudo yum install sysstat  # 或 sudo dnf install sysstat(Fedora新版本)
    

1.2 运行iostat查看磁盘状态

使用以下命令实时监控磁盘I/O,每2秒刷新一次(间隔可自定义):

iostat -dx 2
  • -d:仅显示磁盘相关统计信息,排除CPU信息。
  • -x:显示扩展统计信息(如等待时间、利用率),比默认输出更详细。

1.3 关键指标解读

iostat输出结果中,以下指标是判断磁盘I/O瓶颈的核心:

指标含义参考标准
Device磁盘设备名(如sdavdanvme0n1,NVMe硬盘通常以nvme开头)-
r/s/w/s每秒读/写请求数量(IOPS)无固定标准,需结合业务判断
rkB/s/wkB/s每秒读/写数据量(吞吐量,单位KB)无固定标准,需结合业务判断
await每个I/O请求的平均等待时间(毫秒),包含队列等待时间和设备处理时间正常应<10ms,>50ms说明排队严重
%util磁盘设备利用率(百分比),表示磁盘忙时占比持续>80%说明磁盘饱和,存在瓶颈

1.4 示例分析

假设iostat输出如下:

Device            r/s     w/s     rkB/s     wkB/s   await  %util
sda              0.00  485.00      0.00  59420.00  120.33  98.20
vda              2.00   10.00     16.00     80.00    2.10   3.50

从结果可见:

  • sda磁盘的%util高达98.2%(接近饱和),await达120.33ms(排队严重),wkB/s为59420KB/s(约58MB/s),说明sda是高压力磁盘,且主要压力来自写入操作。
  • vda磁盘各项指标正常,无I/O瓶颈。

三、第2步:定位高I/O占用进程

确认高压力磁盘(如上文的sda)后,下一步需锁定对该磁盘进行大量读写的进程。常用工具包括iotop(直观实时)和pidstat(详细统计)。

方法1:使用iotop(首选,实时监控)

iotop类似top工具,但专门针对磁盘I/O,能按进程/线程显示实时读写速率,且支持交互操作。

1.1 安装iotop
  • Ubuntu/Debian系统
    sudo apt install iotop
    
  • CentOS/RHEL/Fedora系统
    sudo yum install iotop  # 或 sudo dnf install iotop
    
1.2 运行iotop(需root权限)
sudo iotop
1.3 实用操作技巧
  • 只显示有I/O活动的进程:按下键盘o键(或启动时加--only参数,如sudo iotop --only),避免无关进程干扰。
  • 自定义刷新间隔:通过-d参数设置,如sudo iotop -d 3表示每3秒刷新一次。
  • 按列排序:按左右箭头键切换排序列(如按“DISK WRITE”排序,快速找到写入量最大的进程)。
  • 查看累计I/O:加-a参数显示进程累计读写量,而非实时速率(适合长期监控)。
1.4 输出解读

假设iotop输出如下:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 59.42 M/sTID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND4560 be/4 mysql       0.00 B/s   59.42 M/s  0.00 % 99.99 % mysqld1230 be/4 root        0.00 B/s     0.00 B/s  0.00 %  0.00 % bash

关键信息:

  • COMMAND列显示进程名,此处mysqld(MySQL服务进程)是主要 culprit。
  • DISK WRITE列显示mysqld每秒写入59.42MB,与前文sda磁盘的写入量匹配。
  • IO>列显示mysqld的I/O占用时间达99.99%,说明该进程几乎完全占用磁盘I/O资源。

方法2:使用pidstat(详细统计,支持历史记录)

pidstatsysstat套件的一部分,不仅能显示进程的实时I/O统计,还能记录历史数据,适合需要长期跟踪的场景。

2.1 运行pidstat监控I/O
  • 监控所有进程的I/O(每2秒刷新)
    sudo pidstat -d 2
    
  • 监控特定进程(已知PID后):若已通过iotop找到可疑进程PID(如4560),可针对性监控:
    sudo pidstat -d -p 4560 2
    
2.2 输出解读

假设pidstat输出如下:

Linux 5.4.0-xxx-generic    2024-05-20      _x86_64_        (4 CPU)03:15:20 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:15:22 PM   112      4560      0.00  59420.00      0.00  mysqld
03:15:24 PM   112      4560      0.00  58980.00      0.00  mysqld

关键指标:

  • kB_rd/s:进程每秒从磁盘读取的字节数(KB),此处mysqld无读取操作(0.00)。
  • kB_wr/s:进程每秒向磁盘写入的字节数(KB),mysqld稳定在约59000KB/s(58MB/s),与iotop结果一致。
  • kB_ccwr/s:进程每秒取消写入的字节数(KB,如文件删除后的回写),此处为0,无异常。

四、第3步:深入分析高I/O进程

找到高I/O进程(如mysqld,PID=4560)后,需进一步分析其具体行为,例如“读写哪些文件”“发起哪些系统调用”,为优化提供方向。常用工具包括lsofstrace/proc文件系统。

方法1:用lsof查看进程打开的文件

lsof(List Open Files)可列出进程当前打开的所有文件(包括普通文件、设备文件、日志文件等),帮助定位进程读写的具体文件。

1.1 基础用法(列出进程打开的所有文件)
sudo lsof -p 4560
  • -p 4560:指定进程PID为4560(mysqld)。
1.2 过滤关键文件(重点关注写入/删除的文件)

实际场景中,进程打开的文件可能很多,可通过grep过滤核心文件(如正在写入的文件、已删除但仍被占用的日志文件):

# 过滤“可写入的普通文件”(REG类型+W权限)和“已删除的文件”(DEL状态)
sudo lsof -p 4560 | grep -E "REG.*W|DEL"
1.3 示例输出与解读
mysqld  4560 mysql    4u   REG    8,1  10485760  123456 /var/lib/mysql/ib_logfile0 (deleted)
mysqld  4560 mysql    5u   REG    8,1  10485760  123457 /var/lib/mysql/ib_logfile1
mysqld  4560 mysql    6u   REG    8,1 524288000  123458 /var/lib/mysql/testdb.ibd

关键信息:

  • ib_logfile0(已删除,DEL状态)和ib_logfile1是MySQL的redo日志文件,用于崩溃恢复,mysqld正在写入这些文件。
  • testdb.ibd是MySQL的表空间文件,可能因大量写入操作(如批量插入)导致高I/O。

方法2:用strace跟踪进程的系统调用(高级调试)

strace可实时跟踪进程发起的系统调用(如readwriteopensync等),能精确到“进程向哪个文件写入了多少数据”,但开销较大,不建议在生产环境长时间运行。

2.1 基础用法(跟踪文件读写相关调用)
sudo strace -ff -p 4560 -e trace=file,write,read -s 1024 -o /tmp/mysqld_strace.txt

参数解读:

  • -ff:跟踪进程的所有子线程(如mysqld的工作线程),并为每个线程生成独立日志文件。
  • -p 4560:指定目标进程PID。
  • -e trace=file,write,read:只跟踪与“文件操作”(file)、“写入”(write)、“读取”(read)相关的系统调用,减少冗余日志。
  • -s 1024:显示字符串(如文件名)的前1024个字符,避免文件名被截断。
  • -o /tmp/mysqld_strace.txt:将日志输出到指定文件(子线程日志会以mysqld_strace.txt.123形式命名)。
2.2 日志解读示例

查看/tmp/mysqld_strace.txt,可找到类似记录:

write(4, "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) = 16
open("/var/lib/mysql/testdb.ibd", O_RDWR|O_DIRECT|O_DSYNC) = 7
write(7, "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16384) = 16384
  • write(4, ...):向文件描述符4(对应ib_logfile1)写入数据。
  • open(...):打开testdb.ibd文件,权限为“读写”(O_RDWR)+“直接I/O”(O_DIRECT)。
  • write(7, ...):向testdb.ibd(文件描述符7)写入16384字节(16KB)数据,验证了mysqld对该表空间文件的写入操作。

方法3:用/proc文件系统查看进程累计I/O

Linux的/proc文件系统是内核与用户空间的接口,其中/proc/<PID>/io文件存储了进程的累计I/O统计信息,适合手动计算进程的实时I/O速率。

3.1 查看累计I/O
sudo cat /proc/4560/io
3.2 输出解读与速率计算

示例输出:

rchar: 12345678        # 进程从内核读取的总字节数(含缓存,非物理磁盘)
wchar: 987654321       # 进程向内核写入的总字节数(含缓存,非物理磁盘)
syscr: 120             # 进程发起的读系统调用次数
syscw: 450             # 进程发起的写系统调用次数
read_bytes: 4096000    # 进程从物理磁盘读取的总字节数(KB)
write_bytes: 20480000  # 进程向物理磁盘写入的总字节数(KB)
cancelled_write_bytes: 0  # 取消写入的总字节数
  • 实时速率计算:间隔10秒读取两次write_bytes,计算差值除以时间:
    1. 第一次读取:write_bytes=20480000
    2. 10秒后第二次读取:write_bytes=26480000
    3. 写入速率 = (26480000 - 20480000) / 10 = 600000 KB/s = 600 MB/s(此处为示例,实际需根据真实数据计算)。

五、常见高I/O进程场景与优化方向

排查出高I/O进程后,需结合业务场景制定优化方案。以下是常见高I/O进程及对应的优化思路:

进程类型常见场景优化方向
数据库(MySQL/PostgreSQL)1. 大量写入(如批量插入、日志刷盘);2. 全表扫描导致的大量读取;3. 脏页频繁刷新。1. 调整数据库参数(如MySQL的innodb_flush_log_at_trx_commit);2. 优化SQL(加索引避免全表扫描);3. 升级磁盘(如机械硬盘换SSD)。
日志服务(rsyslog/journald)应用日志输出过多(如 debug 级别日志未关闭),导致日志文件频繁写入。1. 调整日志级别(如改为 info/warn);2. 配置日志轮转(logrotate),避免单个日志文件过大;3. 日志归档到远程存储(如ELK)。
备份工具(rsync/tar/cp)全量备份时大量读取源文件,写入目标存储,占用磁盘I/O。1. 改为增量备份(如rsync --link-dest);2. 在业务低峰期执行备份;3. 使用多线程工具(如pigz替代gzip压缩)。
包管理器(apt/yum)批量安装/更新软件时,大量下载包并解压写入磁盘。1. 选择业务低峰期执行更新;2. 配置本地yum/apt源(如阿里云镜像),减少下载耗时。
虚拟机/容器(KVM/Docker)虚拟机磁盘镜像(qcow2/raw)或容器数据卷的频繁读写。1. 使用SSD存储镜像/数据卷;2. 配置磁盘缓存策略(如KVM的cache=writeback);3. 限制容器I/O速率(如Docker的–device-read-bps)。

六、排查流程总结(附流程图)

Linux 磁盘 I/O 高占用进程的排查需遵循“从全局到局部、从现象到本质”的逻辑,通过标准化流程可高效定位问题并落地解决方案。以下为完整排查流程拆解及可视化流程图。

1. 排查流程分步拆解

步骤 1:全局诊断 - 确认磁盘 I/O 瓶颈

  • 核心目标:判断性能问题是否源于磁盘 I/O(排除 CPU、内存瓶颈干扰),定位高压力磁盘。
  • 执行工具iostat(需提前安装 sysstat 套件)。
  • 关键操作
    1. 运行命令 sudo iostat -dx 2(每 2 秒刷新一次,-d 仅显磁盘、-x 显扩展指标)。
    2. 重点关注指标:%util(磁盘利用率,持续 >80% 为饱和)、await(I/O 等待时间,>50ms 为排队严重)、wkB/s/rkB/s(读写吞吐量)。
    3. 输出结果中,筛选出 %utilawait 异常的磁盘(如 sda),作为后续排查焦点。

步骤 2:进程定位 - 锁定高 I/O 进程

  • 核心目标:找到对“高压力磁盘”进行大量读写的具体进程(获取 PID 和进程名)。
  • 执行工具:优先用 iotop(实时直观),备选 pidstat(统计详细)。
  • 关键操作(以 iotop 为例)
    1. 运行命令 sudo iotop --only--only 仅显有 I/O 活动的进程,减少干扰)。
    2. 按“DISK WRITE”或“DISK READ”列排序(左右箭头键切换),定位读写量最大的进程。
    3. 记录目标进程的 PID(如 4560)和 进程名(如 mysqld),用于下一步分析。

步骤 3:深度分析 - 挖掘进程 I/O 行为

  • 核心目标:明确高 I/O 进程的具体操作(如读写哪些文件、发起哪些系统调用),为优化提供依据。
  • 执行工具lsof(查打开的文件)、/proc/<PID>/io(查累计 I/O 统计)、strace(查系统调用,谨慎使用)。
  • 关键操作
    1. 查读写文件:运行 sudo lsof -p 4560 | grep -E "REG.*W|DEL",筛选进程写入的普通文件(REG.*W)或已删除但仍占用的文件(DEL,如未释放的日志),定位核心读写文件(如 /var/lib/mysql/testdb.ibd)。
    2. 查累计 I/O:运行 sudo cat /proc/4560/io,通过对比不同时间的 write_bytes/read_bytes,计算进程实时 I/O 速率(如间隔 10 秒差值 ÷10 得每秒写入量)。
    3. 查系统调用(可选):若需精准跟踪操作,运行 sudo strace -ff -p 4560 -e trace=file,write -o /tmp/strace.log-ff 跟踪子线程,-e 过滤关键调用),但需注意:strace 性能开销较大,生产环境避免长时间运行。

步骤 4:优化落地 - 解决 I/O 瓶颈

  • 核心目标:结合进程类型和业务场景,制定针对性优化方案,降低磁盘 I/O 压力。
  • 优化方向(按进程类型匹配)
    • 数据库进程(如 mysqld):调整参数(如 MySQL 的 innodb_flush_log_at_trx_commit 降低刷盘频率)、优化 SQL(加索引避免全表扫描)、升级磁盘(机械硬盘换 SSD)。
    • 日志进程(如 rsyslog):降低日志级别(debug → info)、配置 logrotate 日志轮转、将日志归档至远程存储(如 ELK 集群)。
    • 备份进程(如 rsync):改为增量备份(rsync --link-dest)、在业务低峰期执行、用多线程工具(如 pigz 替代 gzip 压缩)。
  • 验证效果:优化后重新运行 iostatiotop,确认磁盘 %utilawait 恢复正常,高 I/O 进程读写量下降。

2. 排查流程可视化流程图

在这里插入图片描述

通过上述流程,可标准化解决 Linux 磁盘 I/O 高占用问题。实际运维中需注意:优先使用 iostatiotop 等低开销工具,避免在生产环境滥用 strace;优化方案需结合业务特性(如数据库不可中断,需选择低风险参数调整),确保稳定性优先。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96509.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决React中通过外部引入的css/scss/less文件更改antDesign中Modal组件内部的样式不生效问题

不生效原因Ant Design 的 Modal 默认通过 ReactDOM.createPortal 挂在 <body> 下&#xff0c;与你的组件树平级&#xff0c;所以写在 .module.css / scoped less 里的选择器根本匹配不到它&#xff0c;就算写全局样式&#xff0c;也可能因为权重不足或异步挂载时机而“看…

day41 51单片机最小系统、GPIO控制、时序逻辑器件(74HC138/595)与LED点阵驱动原理

day41 51单片机最小系统、GPIO控制、时序逻辑器件&#xff08;74HC138/595&#xff09;与LED点阵驱动原理一、嵌入式系统基础概念 1.1 嵌入式系统定义先设计硬件&#xff0c;基于硬件设计软件实现一个具体的功能 —— 专用的计算机系统硬件/软件可剪裁&#xff1a;根据功能需求…

html列表总结补充

1.有序列表的type属性不同的type值表示不同的排序标号1 表示列表项目用数字标号&#xff08;1,2,3...&#xff09; 1 a 表示列表项目用小写字母标号&#xff08;a,b,c...&#xff09; 2 A 表示列表项目用大写字母标号&#xff08;A,B,C...&#xff09; 3 i 表示列表项目用小写罗…

smartctl Current_Pending_Sector 硬盘待处理扇区

smartctl -a /dev/sdae当前值: 312 个待处理扇区 严重警告信号&#xff0c;硬盘发现了 312 个可疑扇区&#xff0c;正在等待重新分配 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 312读取错误频发 错误计数: 38 次 ATA 错误 …

MATLAB1-基本操作和矩阵输入-台大郭彦甫

目录 基础的指令 format 矩阵和向量 找出某行某列的矩阵元素 快速打出多个矩阵或者向量 矩阵连接 矩阵计算 一些特殊矩阵fuction 矩阵相关函数 基础的指令 clc 清空命令行窗口 clear all 清空工作区的全部变量 who 将工作区的全部变量显示出来 whos 工作区的变量信息详…

【CSS 3D 交互】实现精美翻牌效果:从原理到实战

效果图 前言 在现代网页设计中&#xff0c;交互效果是提升用户体验的重要手段。3D 翻牌效果作为一种常见的交互模式&#xff0c;广泛应用于卡片展示、问答切换、产品详情等场景。本文将详细介绍如何使用 CSS 3D 技术实现一个精美的翻牌效果&#xff0c;并深入解析其实现原理。…

Python核心技术开发指南(062)——静态方法

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 静态方法的定义 静态方法是类中定义的一种特殊方法,它不需要依赖类实例或类本身即可调用,也不隐含传递self(实例引用)或cls(类引用)参数。在Python中,通过@staticmethod装饰器来定义静态…

炒股进阶理论知识

学完前面的《从零开始学炒股》这样的入门课程后&#xff0c;你已經有了一个基本的框架&#xff0c;接下来需要做的是深化、拓展和建立自己的交易系统。以下是为你量身定制的后续学习路径和理论知识建议&#xff0c;分为几个核心模块&#xff1a;模块一&#xff1a;技术分析的深…

华为OD机试真题-跳马-OD统一考试(C卷)

题目描述: 马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或直着走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称“马走‘日’字。 给顶m行n列的棋盘(网格图),棋盘上只有有棋子象棋中的棋子“马”,并且每个棋子有等级之分,…

PyTorch 模型保存与加载 (速查版)

文章目录1. 推理用: 保存 & 加载权重 (最常见)2. 继续训练用: 保存 & 加载完整状态3. 微调用: 部分加载 (分类头不同等情况)1. 推理用: 保存 & 加载权重 (最常见) import torch import torch.nn as nnmodel nn.Linear(10, 2)# 保存权重 torch.save(model.state_d…

oneshape acad数据集 sam-dataset

Full Text Search - Hugging Face sketchai (Sketch AI)

0913刷题日记

今日计划10道1/10两眼一睁就是刷209. 长度最小的子数组target 396893380 超时头疼看下题解我的问题在于&#xff0c;中间有一个又写了一个遍历&#xff0c;思路和滑动窗口差不多&#xff0c;但是那个遍历就把时间倍数了。头疼还能做题&#xff0c;你很棒了,身体健康最重要。没…

【JAVA】网络编程

引言 在学习网络编程之前&#xff0c;我们编写的程序几乎都是“单机版”的——只能在本地运行&#xff0c;自娱自乐&#xff0c;无法与其他主机&#xff08;用户&#xff09;进行交互。 有些同学可能会产生误解&#xff1a;既然 Java 号称“一次编译&#xff0c;到处运…

HTML标签关系详解:构建网页的骨架结构

前言 在上一篇教程中&#xff0c;我们学习了HTML5的基本结构。今天&#xff0c;让我们深入探讨HTML标签之间的关系。理解HTML标签之间的关系对于构建结构清晰、语义明确的网页至关重要。就像在现实生活中&#xff0c;建筑物的各个部分需要按照一定的规则组合在一起一样&#x…

238 除自身以外数组的的乘积

我的解法&#xff08;没头绪&#xff0c;参考AI的思路&#xff09; 好奇怪啊&#xff0c;这个题目&#xff0c;没什么思路 题目的主要难点是&#xff0c;如何通过这个线性运算得出所有的乘积和&#xff0c;同时不适用除法。 问了下AI&#xff0c;这种题目我可以从什么方向入手&…

智能体:从技术架构到产业落地的深度解析

在人工智能技术从 “感知智能” 向 “认知智能” 跨越的关键阶段&#xff0c;智能体&#xff08;Intelligent Agent&#xff09;作为具备自主决策与环境交互能力的核心载体&#xff0c;正成为连接 AI 算法与产业应用的重要桥梁。不同于传统被动执行指令的软件系统&#xff0c;智…

MATLAB基于组合近似模型和IPSO-GA的全焊接球阀焊接工艺参数优化研究

引言与研究背景 全焊接球阀的重要性&#xff1a;广泛应用于石油、天然气、化工等长输管道和关键装置&#xff0c;其安全性、密封性和耐久性至关重要。阀体一旦发生焊接缺陷&#xff0c;可能导致灾难性后果。 焊接工艺的挑战&#xff1a;焊接是一个涉及电、热、力、冶金的复杂瞬…

EzRemove(ezremove.ai)评测与实操:5 秒在线抠图、支持批量与换底(电商/设计团队提效指南)

摘要&#xff1a;做主图、白底图、海报的小伙伴&#xff0c;经常被“抠图—换底—导出”这套流程折磨。EzRemove 是一个在线 AI 抠图工具&#xff0c;支持5 秒自动抠图、透明 PNG 导出、批量处理、背景替换与基础编辑&#xff0c;无需安装本地软件&#xff0c;适合电商商家、设…

RStudio 教程:以抑郁量表测评数据分析为例

R 语言是一种专为统计计算、数据分析和图形可视化而设计的编程语言&#xff0c;在学术界和工业界都备受青睐。RStudio是一款为 R 语言量身打造的集成开发环境&#xff08;IDE&#xff09;。它如同一个功能强大的指挥中心&#xff0c;能够将数据科学工作所需的一切&#xff1a;控…

Rupert Baines加入CSA Catapult董事会

英国半导体行业领军人物鲁珀特贝恩斯&#xff08;Rupert Baines&#xff09;正式出任英国化合物半导体应用公司&#xff08;CSA Catapult&#xff09;非执行董事&#xff0c;宛若一位经验丰富的航海家将为这艘科技旗舰指引航向。这位三次成功创业退出的科技企业家&#xff0c;将…