首页
学习
活动
专区
圈层
工具
发布

记一次 PHP 并发性能调优实战 -- 性能提升 104%

如果你有 php 使用经验, 那肯定就更好了 业务背景 框架及相应环境 laravel5.7, mysql5.7, redis5, nginx1.15 centos 7.5 bbr docker, docker-compose...我们首先找到系统中一个合适的API或函数, 用来放大问题. 这个 api 设计之初是给 nginx 负载均衡做健康检查的....我们知道 Laravel 的性能是出了名的不好, 但是也不至于到这个程度, 从 api 的编写来看不应该这么低....\response(null, 500); } return \response(null, 204); } 问题表现以及排查思路 # top top 命令发现系统 CPU 占用 100% 其中用户态占...由于 top 命令收集信息的时候, 可能 linux 把这个进程强制调度了 ( 比如用于 top 收集进程信息 ), 所以在这一瞬间(屏幕刷新的这一瞬间)某些 php-fpm 进程处于 sleep 状态

2.7K32
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    环境配置(一)

    repo.packagist composer https://packagist.phpcomposer.com 创建项目 composer create-project --prefer-dist laravel.../laravel learnLaravel 当你看到这里一下内容的时候说明你的项目创建成功 Writing lock file Generating optimized autoload files >...项目结构 首先解释一下laravel的配置文件.env中的数据配置信息,作为开发人员我们首先关注的是数据库,在这里优先解释一下数据库配置 DB_CONNECTION=mysql 数据库类型 DB_HOST...=127.0.0.1 数据库连接地址 DB_PORT=3306 数据库端口号 DB_DATABASE=laravel 数据库名称 DB_USERNAME=root 数据库用户名 DB_PASSWORD...= 数据库密码 PS 项目当中,我们把所有的配置信息写在.env.example中,.env是不放在版本控制当中的,上线的时候由运维小哥哥把.env.example复制为.env

    1.2K30

    通过 Laravel 创建一个 Vue 单页面应用(六)

    如果您需要跟上,我们在 第5部分  中停止了删除用户的功能,以及在成功删除后如何重定向用户。我们还研究了如何将 HTTP 客户机提取到一个专用模块中,以便在整个应用程序中重用。...以下是迄今为止的系列概要: 第1部分 – 设置项目和 Vue 路由器 第2部分 – 在 Vue 路由器中加载异步数据 第3部分 – 在 Laravel 中创建真实的用户端 第4部分 – 编辑用户 第5部分...我们尝试从返回值中拿到 message 属性或给予一个默认的错误信息。...这时你提交表单的话会在控制台看到带有 405 错误状态的错误信息。 添加 API 接口 我们准备在 Laravel 中添加 API 接口以创建新用户。这将类似于编辑现有用户。...我们将首先定义通过 API 存储新用户的路径: // routes/api.php Route::namespace('Api')->group(function () { // ...

    5.2K20

    Docker六脉神剑(四) 使用Docker-Compose进行服务编排搭建lnmp环境

    Docker-Compose的工程配置文件默认为docker-compose.yml,使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。...Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project。...Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。.../aoppp/docker-compose.yml docker-compose.yml version: "3.1" services: mysql: image: mysql:5.7...项目 composer create-project --prefer-dist laravel/laravel bbs "5.6.*" Laravel配置数据库连接 DB_CONNECTION=mysql

    2.6K10

    Laravel 7发行说明

    Laravel Sanctum 为 SPA (单页应用程序),移动应用程序和基于令牌的简单 API 提供了轻巧的身份验证系统。 Sanctum 允许应用程序的每个用户生成多个 API 令牌。...Laravel 内置了多种常用的类型转换。但是,用户偶尔会需要将数据转换成自定义类型。...例如,考虑这种情况,该情况是通过 Slug 为特定用户查找博客文章的: use App\Post; use App\User; Route::get('api/users/{user}/posts/{...有关路由模型绑定的更多信息,请查阅路由文档。 多邮件驱动程序 多邮件驱动程序支持由 Taylor Otwell 贡献。 Laravel 7 允许为单个应用配置多个邮件驱动。...有关 Laravel 7.x 中的 CORS 支持的更多信息,请查阅CORS文档。 查询时类型转换 查询时类型转换由 Matt Barlow 开发贡献.

    12.2K20

    Laravel 请求生命周期

    内容涵盖当一个 HTTP 请求发送到 Laravel 服务后,这个请求在项目运行的各个阶段是如何被处理的,然后框架又是如何将处理结果发送回用户的。 我们会带领大家一步步深入挖掘出这其中的秘密。...路由器将请求转发至注册的路由和对应的控制器(译注:在 routes/web.php 或 routes/api.php 文件中定义的路由),并且执行当前路由相关的中间件。...一个 HTTP 请求实例 1 用户在浏览器输入 http://xyz.com 并点击回车按钮。 2 当用户点击回车按钮,浏览器将页面的请求通过网络发送到 Web 服务器。...3 Web 服务器接收请求并解析请求信息。在 Web 服务器的配置文件中有配置当前项目根目录路径。由于当前访问的 URL 地址不包含子路径,Web 服务器会查找配置文件的 index.php 文件。...9 Web 服务器接收到 PHP 的输出结果,并将结果返回给用户浏览器。 10 用户浏览器接收到服务器响应,渲染页面并展现给用户。

    3.7K10

    NativePHP 的技术原理和实现细节

    当我们想在 Laravel 系统中操作 Electron APP 时,实际上操作的就是这些 API。...举个例子,在 Laravel 中你可以直接通过 Window Facade 快速的设置窗口大小,这个操作本质上会发起一个对 Express Api Server 的 POST 请求;Express Server...比如用户重新设置了窗口大小、用户打开了一个 URL 等;而这些事件全都会通过 RESTful API 发往 PHP Server。...为默认打开的窗口,如果你的 PHP Server 运行在 127.0.0.1:8080 上,那 http://127.0.0.1/ 就会是 Election APP 默认打包的页面,至于 Election 如何将一个网页打包为...而且我们不需要关心项目打包的具体细节,也不需要手动对接这些 API;NativePHP 已经非常深度的把他们集成到了 Laravel 环境中,我们可以高效的在 Laravel 中使用这些魔法而不用关心具体的细节实现

    1.2K40

    通过 Laravel 创建一个 Vue 单页面应用(一)

    使用 laravel 创建一个 Vue 单页面应用 (SPA) 可以构建一个整洁的由 API 驱动的应用。...首先我们将注意力集中在编写每一个小的功能代码块上,然后在后续的教程中,我们再演示如何将 Laravel 作为 API 层而构建一个完整的应用。...我们这里将要使用 history 模式,也就是说我们需要配置一个 Laravel 路由来匹配所有用户在 SPA 页面中可以进入的 URL。...举个例子, 如果用户在浏览器中刷新了 /hello 这个路由,我们 (Laravel) 需要匹配到它并返回对应的 Vue 模板。Vue Router 将会识别该路由并渲染对应的 Vue 页面组件。...如果我们不这样做, 当用户发送了一个 /hello 请求时, Laravel 将返回 404 响应.

    5.8K20

    Laravel5.2之Filesystem-从Dropbox中下载文件到AWS S3

    说明:本文主要讲述了Laravel的文件系统Filesystem的小Demo,逻辑不复杂,主要就是把Dropbox上的一个文件下载到本地local,和下载到AWS S3中。...这个小Demo作为小练习玩玩,了解下Laravel的Filesystem。 备注:开发环境为Laravel5.2+MySQL5.7+PHP7,该环境也是公司项目环境,使用起来还不错。...但最牛逼的是这些软件是可以相互集成的,如一个issue通过SourceTree的一次commit+push,Bamboo会自动build和deploy代码至服务器,并且Hipchat收到push和deploy信息...还有日志收集工具Logentry和错误通知工具Sentry,尤其Sentry对于收集Laravel程序的错误异常也很清晰,还有Runscope针对API测试和监测的软件,这个大神器,实时监控线上API,...贴下平时工作中Hipchat收到的通知日常(QQ真的不是在工作中用的软件啊),代码push/build/deploy都会收到通知,还可以跳转到JIRA中或Bamboo中查看具体issue信息等等功能,是个团队协作利器

    2.1K41

    为什么 Laravel 这么优秀?

    因为我们已经完成了数据表中字段的定义、表与表的关系、以及最重要的一步:如何将数据及数据之间的关系写入数据库中,下面简单的来介绍下在 Laravel 是如何完成的。...course_id" in (1) How to save data to database 如何将数据保存到数据库 Laravel Factory 提供了一种很好的方式来 Mock 测试数据,一旦我们定义好....*' => 'sometimes|int|exists:students,id', ]; } } 如果你尝试传入一些无效的数据,Laravel 会直接帮我们验证并返回错误信息...,如下面的 secret 字段只有当用户是 admin 时才返回: public function toArray(Request $request): array { return [...信号调度框架 无 无 Signals 支付框架 Cashier 无 无 浏览器测试 Dusk 无 System Testing 自动化部署工具 Envoy 无 无 Redis 调度 Horizon 无 无 完整用户系统

    5.5K10

    为什么 Laravel 会成为最成功的 PHP 框架?

    2011年,Taylor Otwell将Laravel作为一种包含全新现代方法的框架介绍给大家。Laravel最初的设计是为了面向MVC架构的,它可以满足如事件处理、用户身份验证等各种需求。...它可以让用户通过在浏览器上输入路径的方式让应用程序的各部分相关联。...Laravel自带对本地用户的身份验证,并可以使用“remember” 选项来记住用户。它还可以让你例如一些额外参数,例如显示是否为活跃的用户。...除此之外,它还同步并集成了用户身份验证系统。所以,你不再需要担心如何将计费系统集成到开发当中了。...使用Laravel,可以启用OpenSSL安全加密算法AES-256-CBC来满足你所有的需求。另外,所有的加密值都是由检测加密信息是否被改变的验证码所签署的。

    5.1K90

    代练系统护航小程序平台搭建全栈开发指南

    技术选型后端:PHP(推荐Laravel框架或ThinkPHP6),具备轻量级、高性能的API开发能力,支持ORM方法防止SQL注入,适合快速构建业务逻辑。...2、环境搭建后端环境:推荐使用PHP 7.4+,搭配MySQL 5.7+或MariaDB,Web服务器选择Nginx或Apache,并开启Redis扩展。...用户下单流程说明1、用户分为2种第一种 平台自己的客户,通过访问主页,注册的默认是平台客户。第二种 通过工作室的二维码或者链接进来注册的,默认为工作室客户。...其中 打手未接单之前, 用户可自主申请退款。 如果是打手已经接单,要退款需要联系客服协商,如果客服同意,客服可操作主动退单。...指定单手下单:如果该用户是平台的用户,可以选择所有平台下的打手指定下单,如果该用户是工作室下的用户,选择指定打手时 只会显示工作室下的打手。

    40710

    ERROR 1055 (42000): Expression #1 of SELECT list is not in

    : Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'work_ad.api_community_pic.id...但是查看自己的配置my.cnf发现在sql_mode中并没有ONLY_FULL_GROUP_BY这个值 然后去查看Laravel的配置文件,config/database.php,查找mysql的配置,...如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。...如 果未给出该模式,那么数据被零除时MySQL返回NULL NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户 NO_ENGINE_SUBSTITUTION: 如果需要的存储引擎被禁用或未编译...所以如果在开发阶段,如果要使用mysql5.7版本建议大家阅读一下5.7的文档,然后将自己的sql写的更严谨,尽量少用select * ,只查出自己想要的数据列即可。

    1.8K40

    基于 Redis 消息队列实现邮件通知的异步发送

    配置邮件驱动 为了方便本地开发调试,使用 Maillog 作为邮件驱动,它可以在本地拦截应用发送的所有邮件并提供一个 Web 界面在浏览器中预览这些邮件信息,Laravel Sail 开发环境默认提供了这个容器服务...在 .env 中配置邮件驱动信息,这里配置下系统发件人和用户名即可,其他可保持默认配置: MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME...定义用户注册事件监听器 以学院君现在使用的 Laravel Breeze 认证扩展包为例,该扩展包在用户注册成功后会触发 Laravel 底层提供的 Illuminate\Auth\Events\Registered...:work --queue=notifications --tries=3 在浏览器通过 http://redis.test/register 访问用户注册页面,填写用户信息后点击「REGISTER」...关于 Laravel 底层是如何将通知发送推送到消息队列的,可以参考之前事件监听和广播的底层源码分析思路去查看,这里就不再赘述了。

    3.7K20

    借助尾号限行 API 实现限行规则应用的设计思路分析

    尾号限行提醒应用1.1 应用简介开发一个可以提醒用户在限行期间禁止行驶的应用,用户可以根据自己的车辆信息以及所在城市或区域来设置提醒。当用户设置的时间到达时,应用会发送提醒通知给用户。...实现方法是使用该 API 获取用户所在城市或区域的尾号限行规则,然后根据用户车辆的尾号信息,计算出具体的限行时间,并设置提醒功能。1.2 应用设计思路图片2....路线规划应用2.1 应用简介开发一个可以根据尾号限行规则来规划出最佳路线的应用,用户可以输入起点和终点信息,应用会自动计算出避开限行区域的最佳路线。...实现方法是使用该 API 获取限行区域信息,然后使用路线规划算法(如Dijkstra算法)计算出不经过限行区域的最短路径。...实现方法是使用该 API 获取所查询城市或区域的限行规则信息,然后将其展示给用户。

    1K30

    Laravel API 开发推荐阅读清单

    API 文档神器 Swagger 介绍及在 PHP 项目中使用 - API 文档撰写方案 推荐 Laravel API 项目必须使用的 8 个扩展包 使用 Jwt-Auth 实现 API 用户认证以及无痛刷新访问令牌...讲讲我最近用 Laravel 做的一个 App 后端项目 Laravel Passport API 认证使用小结 关于 RESTful API 设计的总结 Laravel 5.5 使用 Passport...实现 Auth 认证 使用 Laravel 的 API 资源功能来构建你的 API 单个 Laravel 项目同时配置不同域名 api.domain(用户端接口) 和 admin.domain(管理员端...—— 微信登录、JWT的使用; 用户信息 —— 获取个人信息、上传图片接口、修改个人信息; 话题接口 —— 发布、修改、删除、列表; 话题回复接口 —— 发布、修改、删除、列表; 权限控制 —— 权限列表...,角色列表; 资源推荐接口、活跃用户接口; 接口本地化处理; API 接口错误代码机制; APNS 消息推送服务器端介绍及实现; API 测试 —— 单元测试、集成测试、黑盒测试; 快速完成 API 文档

    5.6K70

    程序员的情人节「GitHub 热点速览 v.22.07」

    业界·Laravel 发布 9.0 版本 上周二,2 月 8 号 Laravel 正式发布 9.0 版本,在发布的 announcement 中提到本次版本有比较多的新功能点,包括:最小的 PHP v8.0...版本(小鱼干不懂 PHP,这里为直译 a minimum PHP v8.0 version)、控制器路由组、可刷新的默认 Ignition 错误页面、Laravel Scout 数据库引擎、Symfony...Laravel 版本的具体信息可参考官方公告:《Laravel 9 is Now Released!》 2....最重要的是它关注隐私、本地存储和用户控制,服务器永远不会存储或分析私人笔记。 GitHub 地址→https://github.com/logseq/logseq 2....GitHub Trending 如果你 Pick 其他好玩、实用的 GitHub 项目,记得来 HelloGitHub issue 区和我们分享下哟 最后,记得你在本文留言区留下你想看的主题 Repo(限公众号

    1.3K20

    基于kubernetes的分布式限流

    基于kubernetes的分布式限流 做为一个数据上报系统,随着接入量越来越大,由于 API 接口无法控制调用方的行为,因此当遇到瞬时请求量激增时,会导致接口占用过多服务器资源,使得其他请求响应速度降低或是超时...一、概念 限流(Ratelimiting)指对应用服务的请求进行限制,例如某一接口的请求限制为 100 个每秒,对超过限制的请求则进行快速失败或丢弃。...1.2 维度 对于限流场景,一般需要考虑两个维度的信息: 时间 限流基于某段时间范围或者某个时间点,也就是我们常说的“时间窗口”,比如对每分钟、每秒钟的时间窗口做限定 资源 基于可用资源的限制,比如设定最大访问次数...网关层限流 服务网关,作为整个分布式链路中的第一道关卡,承接了所有用户来访请求。我们在网关层进行限流,就可以达到了整体限流的目的了。...中间件限流 将限流信息存储在分布式环境中某个中间件里(比如Redis缓存),每个组件都可以从这里获取到当前时刻的流量统计,从而决定是拒绝服务还是放行流量。

    2.2K10
    领券