XHProf 名词解释
XHProf 是一个轻量级的 PHP 性能分析工具,用于分析 PHP 应用程序的性能瓶颈和函数调用情况。它主要用于帮助开发者优化代码,提高应用程序的运行效率。以下是 XHProf 中的一些关键名词及其解释。 1. 性能分析(Profiling)性能分析是收集程序运行时数据的过程,以识别性能瓶颈和优化点。XHProf 通过监控函数调用、执行时间和内存使用等指标,提供详细的分析报告。 2. 函数调用(Function Call)在 XHProf 中,函数调用是指程序中对某个函数的执行。XHProf 记录每个函数的调用次数、执行时间和调用的其他函数,以帮助开发者了解代码的执行路径。 3. 调用栈(Call Stack)调用栈是函数调用的层次结构,用于表示程序执行时函数的调用关系。XHProf 提供的报告中,调用栈可以帮助开发者理解哪些函数调用了其他函数及其相应的执行时间。 4. 执行时间(Execution Time)执行时间是指函数运行所消耗的时间,通常以毫秒或微秒为单位表示。XHProf 记录每个函数的总执行时间,以及其在调用栈中的相对位置。 5. 内存使用(Memory U...
Tcp Rpc 踩坑实践
最近接到需求, 目前项目满足不了, 需要通过中间件实现.经过讨论和分析, 最后打算 使用 swoole 构建一个 Tcp Rpc 服务. 正常的Rpc 轮子遍地都是 , 但是我们的需求很独特, 需要根据参数 将请求分配至指定 进程. 构建出一套同步堵塞的服务.场景举例: 修改用户A的资产, 通过参数 `uid` 分配器将 请求发送至固定 进程. 使得用户资产都在单进程内排队更新. 上面的场景是很好实现的, 我们也已经在线上运行了一段时间, 基本告别了 过去的mysql 存储用户资产, 并发操作用户资产造成的死锁问题. 重点场景: 两个用户交易资产, 通过参数 `uid`, `bak_uid` 分配器将请求发送到固定 进程.....显然不现实, 高并发场景下, 两个uid 分配到固定进程, 有些扯淡, 所以需要写个算法提供给两个uid 指定进程 `x`, 并且保证接下来的请求带有之前的参数都必须都往这个执行进程 `x` 打 第一个场景 单用户 进程分配方式固定 取模 即可实现 第二个场景 多用户 进程分配方式动态算法 实现 中间坑很多 但也最终实现, 但性能堪忧, 有待测...
Linux命令之pstree - 以树状图显示进程间的关系
pstree 是一个用于显示当前运行的进程及其父子关系的命令行工具。它以树状图的形式展示进程,能够帮助用户更直观地理解进程之间的层级关系。 1. 基本用法1.1 运行 pstree在终端中输入以下命令: pstree 这将显示当前用户的进程树。 1.2 查看所有用户的进程如果希望查看系统中所有用户的进程,可以使用 -a 选项: pstree -a 1.3 显示进程 ID要显示每个进程的进程 ID(PID),可以使用 -p 选项: pstree -p 1.4 结合其他选项您还可以结合多个选项使用。例如,显示所有进程及其 PID: pstree -ap 1.5 指定某个用户的进程如果想查看特定用户的进程,可以使用 -u 选项,后面跟用户名: pstree -u username 1.6 过滤特定进程可以指定进程名称来过滤输出,例如: pstree -p | grep process_name 2. 示例2.1 基本树状图运行 pstree 命令,您可能会看到如下输出: init─┬─cron ├─sshd───sshd───bash───pstree ...
TiDB 踩坑
昨天使用 TiDB 查数据发现问题 select FROM_UNIXTIME(created, '%Y%m%d') as dates from `table` #返回 20181122 但是 select FROM_UNIXTIME(created, '%Y%m%d') as dates from `table` union all select FROM_UNIXTIME(created, '%Y%m%d') as dates from `table`#返回 201811 ..... 后面的 %d 就失效了 早上问DBA 解释 TiDB 就存在这个问题解决方案如下 转 字符串 FROM_UNIXTIME(created, '%Y%m%d') # 更换 CAST(FROM_UNIXTIME(created, '%Y%m%d') AS CHAR) `day` 又遇见新坑 # 取大于created时间 最近一个IDSELECT `id` FROM `table` W...
多层代理获取真实 IP 的问题
在现代网络架构中,使用多层代理(如 CDN 和反向代理)是提高性能和安全性的常见做法。然而,这种架构也带来了获取用户真实 IP 地址的挑战,尤其是在 Nginx 配置中处理 X-Forwarded-For 头部时。本文将深入探讨这个问题,并提供解决方案。 什么是 X-Forwarded-For?X-Forwarded-For 是一个HTTP头部字段,用于标识原始请求的客户端 IP 地址。它在多层代理环境中非常重要,因为每个代理服务器会将其自己的 IP 地址添加到该字段中,导致最终的目标服务器需要解析这个字段以获取用户的真实 IP。 X-Forwarded-For 的格式X-Forwarded-For 的格式通常是这样的: X-Forwarded-For: client1, proxy1, proxy2 client1: 用户真实的 IP 地址。 proxy1: 第一个代理服务器的 IP 地址。 proxy2: 第二个代理服务器的 IP 地址。 获取真实 IP 的挑战在使用 CDN 和 Nginx 等多层代理时,获取用户的真实 IP 地址面临以下问题: IP 地址被替换...
PHP 多层代理 获取真实IP 问题
多层代理 获取真实IP 问题百度一搜 一堆. 但大多都是通过 X-Forwarded-For 获取真实IP原理就是 负载 LVS /EOB /SLB 为了让下游正常获取 客户端IP 会将 客户端IP 填充到 X-Forwarded-For 中传递给下游服务 用户真实IP, 负载, 代理服务器1-IP, 代理服务器2-IP 我们原来获取真实IP 直接就 逗号炸开 取第一个IP 问题来了 客户端请求头 只需要添加 X-Forwarded-For 头信息 就可以伪造IP 解决方案: 根据自己服务代理层数决定 层数 != ip 数 就丢包 /** * @desc 检测异常IP * @return string * @throws */public static function checkLimitIp(){ $header_data = Http::getHeader(); foreach (array('x-real-forwarded-for', 'x-forwarded-for',...
Cloudflare 智能解析到国内服务器的安全过滤坑
在使用 Cloudflare 作为网站的 CDN 和 DNS 服务时,很多用户希望通过其智能解析功能,将流量导向国内服务器。然而,这种做法可能会遇到一些安全过滤的问题。本文将探讨在使用 Cloudflare 智能解析到国内服务器时可能遇到的坑,以及如何避免这些问题。 什么是 Cloudflare 智能解析?Cloudflare 的智能解析功能允许用户根据地理位置将流量解析到不同的服务器。这意味着用户可以根据访问者的地理位置,动态选择最优的服务器来处理请求,从而提高网站的性能和响应速度。 国内服务器的挑战在国内部署服务器时,尤其是通过 Cloudflare 智能解析,可能会面临以下几个问题: 1. 安全过滤国内网络对内容的监管较为严格。很多情况下,Cloudflare 的 CDN 加速可能会因为内容政策而导致请求被拦截或过滤。这可能表现为: 无法访问:某些请求可能会直接被屏蔽,导致用户无法访问网站。 内容丢失:某些静态资源(如图像、JavaScript 文件等)可能无法加载,影响用户体验。 2. IP 黑名单国内某些服务提供商会将 Cloudflare 的 IP 列入黑名单...
DNS 查询实用程式 dig
在网络管理和故障排除中,DNS(域名系统)是一个至关重要的组成部分。dig(Domain Information Groper)是一个强大的命令行工具,用于查询 DNS 记录。本文将介绍 dig 的基本用法、常见选项以及它在 DNS 排错中的应用。 什么是 dig?dig 是一个用于查询 DNS 记录的命令行工具。它可以帮助用户获取域名的相关信息,如 A 记录、MX 记录、CNAME 记录等。相比其他 DNS 查询工具,dig 提供了更为详细且易于理解的输出。 安装 dig在大多数 Linux 发行版中,dig 通常包含在 dnsutils 或 bind-utils 包中。可以通过以下命令安装: # Ubuntu/Debian 系统sudo apt install dnsutils# CentOS/RHEL 系统sudo yum install bind-utils 基本用法使用 dig 查询 DNS 记录的基本语法为: dig [@server] [name] [type] @server: 可选,指定要查询的 DNS 服务器(默认为系统配置的 DNS 服务器)。 n...
Linux 多功能系统资源统计 生成工具 dstat
官方对dstat的定义为:多功能系统资源统计生成工具。 在获取的信息上有点类似于top、free、iostat、vmstat等多个工具的合集,官方解释为vmstat、iostat、ifstat等工具的多功能替代品,且添加了许多额外的功能(Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.);其结果可以保持到csv文件,使用脚本或第三方工具对性能进行分析利用(如通过监控平台监控,也可以保持到数据库)。 在Centos 6.x系统上安装基本服务器即默认安装,而在其他操作系统可能需要手动安装。 e.g. 监控CPU、内存、swap、磁盘使用率,并输出到csv。recordTime 是每条记录的间隔时间,以 秒 为单位。recordNum 是记录数。 $ dstat -tcms --freespace --disk-util --output /home/TempFold...
Aws 迁移 阿里云 踩坑 (Too many open files[24])
php7.2 + swoole 1.10.3ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 4096 bytes) 主master 进程内存溢出问题 减小 buffer_output_size 参数 32M 内存溢出有所改善, 但阿里云个别服务器内存仍在持续增长. [2018-11-02 15:21:48 #17293.8] ERROR swServer_master_onAccept (ERROR 502): accept() failed. Error: Too many open files[24] worker 进程错误日志提示 打开文件数过多, 调整 ulimit -n 参数 仍然存在问题.dispatch_func return -1 导致问题出现, -1 表示 master/manage 进程 , 阿里云环境存在无响应头的请求包 经过测试 在 Serve...




