Tideways和xhgui打造PHP非侵入式监控平台
技术前沿 PHP

Tideways和xhgui打造PHP非侵入式监控平台

xiaole阅读(147)

当我们发现生产环境的某个接口执行时间特别长时应该怎么做?直接登录线上机器单步调试?打大量的log然后分析? 一般我们可以把分析流程拆分为如下几步操作:分析开发环境下执行是否会慢;如果是代码问题,在开发环境下就能检测出来;分析预发环境执行是否会慢;如果是数据库或者第三方扩展问题,在预发环境就能检查出来。从生产环境摘一台机器,分析代码执行慢的原因;如果是机器的问题,在生产环境就能检查出来。1,2,3步骤都需要去分析代码,看哪部分执行时间长。如果人工一句一句代码去排查,不但要耗费大量时间还会导致用户流...

RabbitMQ使用
技术前沿 Web技术

RabbitMQ使用

xiaole阅读(271)

本文将会讲解如何使用RabbitMQ实现延时重试和失败消息队列,实现可靠的消息消费,消费失败后,自动延时将消息重新投递,当达到一定的重试次数后,将消息投递到失败消息队列,等待人工介入处理。在这里我会带领大家一步一步的实现一个带有失败重试功能的发布订阅组件,使用该组件后可以非常简单的实现消息的发布订阅,在进行业务开发的时候,业务开发人员可以将主要精力放在业务逻辑实现上,而不需要花费时间去理解RabbitMQ的一些复杂概念。概要我们将会实现如下功能结合RabbitMQ的Topic模式和Work Qu...

nginx+lua-请求body过大导致get_post_args()无法获取到参数
技术前沿 Nginx

nginx+lua-请求body过大导致get_post_args()无法获取到参数

xiaole阅读(317)

本文描述 nginx + lua 解析 http 报文参数并计算文件md5的详细解决方法。其中包括解析http 报文参数,计算上传文件md5,并解决了当请求body 大于client_body_buffer_size导致ngx.req.get_post_args()无法获取到参数的问题。问题:request body 大于client_body_buffer_size,导致ngx.req.get_post_args()无法获取到参数。原因分析:当post请求body size大于client_b...

PHP进程间通信探究
技术前沿 PHP

PHP进程间通信探究

xiaole阅读(429)

PHP作为解释器运行通过线程或者进程都能实现(如果使用Apache,那么就可能使用多线程模型。使用php-fpm,就是使用多进程模型,这里以多进程模型解释)。服务器每接收到一个请求就要起一个PHP进程,平均一个PHP进程消耗内存2M左右(默认最大为8M,参数可以设置)。独立的进程让PHP能专一的做自己的解释工作,程序员也从复杂的代码逻辑中走出来,不用担心资源的竞争和各种锁问题。独立进程虽好但这也导致想通过多进程或者异步来提速成本非常的高(主要是开发难度)。如果一定要通过PHP实现多进程和异步其实...

PHP模块一览及简要说明
技术前沿

PHP模块一览及简要说明

xiaole阅读(982)

PHP 编译完成后,可以通过一个简单的函数 phpinfo() 查看关于 PHP 的所有信息。以下介绍的模块一览,皆全部来自于函数 phpinfo() 的输出信息。SAPI Modules什么是 SAPI?SAPI 即 Server API, Server Application Programming Interface。1、Apache 2.0 Handler(apache2handler)用于 Apache 2 的模块,当安装的是 PHP 5 的时候,编译出来的文件名是 libphp5.s...

ETCD简介
技术前沿

ETCD简介

xiaole阅读(1132)

1. ETCD是什么ETCD是用于共享配置和服务发现的分布式,一致性的KV存储系统。该项目目前最新稳定版本为2.3.0. 具体信息请参考[项目首页]和[Github]。ETCD是CoreOS公司发起的一个开源项目,授权协议为Apache。提供配置共享和服务发现的系统比较多,其中最为大家熟知的是[Zookeeper](后文简称ZK),而ETCD可以算得上是后起之秀了。在项目实现,一致性协议易理解性,运维,安全等多个维度上,ETCD相比Zookeeper都占据优势。2. ETCD vs ZK本文选取...

老男孩每日一题
技术前沿

老男孩每日一题

xiaole阅读(499)

天日期题目12017年3月7日企业面试问答:Linux服务器如何防止中木马?22017年3月8日如何添加一条路由-route路由实战使用案例32017年3月9日请解释下面Shell脚本中,if开头的整行代码的意思,你见过它的应用场景么?42017年3月10日MySQL授权all导致的血案52017年3月13日企业面试题:如何防止Linux命令行或脚本里MySQL登录密码泄露?62017年3月14日将前端运行的服务或脚本,如何可以放置到后端进行执行72017年3月15日setacl授权相关两个小题...

CodeIgniter性能优化
技术前沿 PHP

CodeIgniter性能优化

xiaole阅读(502)

-》index.php作用:加载了部分全局变量,文件路径等入口优化:干掉了整个web文件,调整了部分路径-》core/CodeIgniter.php作用:ci的核心文件,基本上加载了整个模块优化:进入内部优化-》加载common.php作用:框架特别基本的一些函数log,show,error,is_xxx等,800行左右代码优化:暂时未处理-》composer autoload func-》加载benchmark作用:benchmark性能追查工具,设置了全局的开始和结束时间优化:直接干掉,全局...

APP架构设计经验谈:接口的设计
技术前沿

APP架构设计经验谈:接口的设计

xiaole阅读(510)

App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉。安全机制的设计现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是:用户用密码登录成功后,服务器返回token给客户端;客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;...

沈剑分享MySQL军规
技术前沿 Mysql

沈剑分享MySQL军规

xiaole阅读(542)

一、核心军规不在数据库做计算,cpu计算务必移至业务层控制单表数据量,单表记录控制在千万级控制列数量,字段数控制在20以内平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据拒绝3B(big),大sql,大事务,大批量二、字段类军规用好数值类型tinyint(1Byte)smallint(2Byte)mediumint(3Byte)int(4Byte)bigint(8Byte)bad case:int(1)/int(11)有些字符转化为数字用int而不是char(15)存储ip优先使用enum或...