技术分享 -- 147




事件还原经反馈,本应在点击“下单”按钮后提示错误信息“只限手机端购买”,可是页面只是一刷新,并没有弹出提示信息用户点击下单按钮发现页面刷新,没有提示,也没有进入下单页面,所以觉得很奇怪,也并不知道要到手机端购买,所以问题还是比较严重的 提示信息展示逻辑测试环境中测试,问题没有复现,错误信息提示正常,可是到线上环境,提示信息无论如何都显示不出来这是什么原因呢?首先需要了解提示信息的展示逻辑Action 中判断如果是限制手机购买的项目,则会向 cookie 中存入错误提示信息,并主动进行 302 跳转,回到当前页面当前页面展示时,读取 cookie,取出提示信息,然后将提示信息展示到页面上 问题分析反复排查,发现 Action 中使用的 302 跳转目标地址是 http://www.xxx.com/xxx/{id},在线上环境中,实际跳转结果是 http://www.xxx.com/xxx/{id}.html,事实上,从 http://www.xxx.com/xxx/{id} 到 http://www.xxx.com/xxx/{id}.html 进行了一次 301 跳转,这次跳转中,没有带
#技术帖    #html    #技术分享    #前端   
概述上一篇日志,我们介绍了 nginx upstream 做负载均衡和反向代理的基本配置:nginx upstream 配置 事实上,作为反向代理服务器,缓存是非常有必要的,nginx 实现 upstream 的 ngx_http_proxy_module 实现了非常实用的缓存功能,可以通过配置将上游服务器的资源以一定的规则缓存到本地文件夹下本篇日志我们就结合官方文档说明一下 nginx upstream 缓存的配置和使用 缓存的配置下面是一个典型的配置:proxy_temp_path /usr/local/nginx/proxy_temp_dir 1 2; proxy_cache_path /usr/local/nginx/proxy_cache_dir/cache1 levels=1:2 keys_zone=cache1:100m inactive=1d max_size=10g; #keys_zone=cache1:100m 表示这个zone名称为cache1,分配的内存大小为100MB #/usr/local/nginx/proxy_cache_dir/cache1 表示cache1这个zone的文件要存放的目录 #levels=1:2
#技术帖    #服务器    #技术分享    #nginx   
概述nginx 的负载均衡、反向代理、subrequest 等等功能都依赖于 upstream 机制nginx 的 upstream 模块根据配置的规则实现将请求与返回包体在若干服务器之间转发、拼接的功能 基本配置在 kibana4 的安装、配置和使用的日志中,我们初步介绍了最基本的 upstream 配置kibana4 的安装、配置和使用 我们看到,在 http 配置的 server 下的 location 中,配置了:proxy_pass http://kibana4;  并在 server 外配置了 kibana4 的这个 upstream 规则:upstream kibana4 { server 127.0.0.1:5601 fail_timeout=0; }  事实上,这里我们其实只是希望利用 nginx 提供的权限验证功能,所以仅仅实现了到本地一个端口的反向代理,而不是使用其负载均衡本篇博客中,我们着重介绍如何利用 nginx ups
#技术帖    #服务器    #技术分享    #nginx   
美团存储架构PHP -> mgw(美团基础架构组对 lvs 的封装)-> atlas(数据库中间件) -> DB 事故描述mgw 机器 2月1日 11:30 突然宕机,导致 PHP 端大量读超时(10 秒),加锁的语句没有解锁,导致其他语句无法获取锁造成死锁 然而,由于 rabbitmq 1.6.1 心跳设置的是 2 秒,两次(4 秒)检测不到心跳就会将消息重新发送给另一个 worker,所以在 PHP 读超时前,相同消息被 rabbitmq 转发到了另一个 worker,造成了雪崩效应 大量重复 SQL 被提交 DB 执行,select for update 语句造成死锁,因此要求 DBA kill 掉死锁连接,结果 DBA kill 掉了所有连接,造成订单丢失,mysql insert  操作即使没有显式开启事务,执行
#技术帖    #php    #mysql    #技术分享   

200x200


概述虽然计算机的型号、种类、操作系统各不相同,但是他们可以依据一套相同的协议进行通信,这套协议就是起源于上世纪 60 年代的 TCP/IP 协议,通过这套协议组

#技术帖    #ip    #tcp    #udp   
概述有的时候,我们使用 git push 将本地分支推到远程分支以后,发现因为各种原因推错了,这个时候如果需要回滚是比较难办的本篇日志对远程分支的各种操作进行一个详细的介绍 git reset如果仅仅是 commit 了,还没有 push 到远程分支,只需要先执行 git log,然后通过 log 得到需要回滚到的 commit 的版本号,执行 git reset <version> 就可以了(<version> 就是你在 git log 里看到的具体的版本号) git reset 有几个附加参数,要想知道他们的意思,我们首先需要知道几个定义:HEAD -- 头,也就是当前分支最顶端的一次 commitIndex -- 索引,也就是暂存区中将在下一次 commit 的修改Working Copy -- 工作副本,也就是当前工作目录下的文件,换句话说,就是没有 git add,通过&nb
#技术帖    #github    #技术分享    #git   

200x200


简介通常,我们使用下面这样的模型进行日志的收集工作: 其他的日志收集和展示工具其实也和上图中的结构非常类似,下面,我就介绍一下我最近搭建的,我的博客所在的服务器的 nginx&n

#技术帖    #access    #技术分享    #nginx   

200x200


简介kibana 是 Elastic.co 提供的个性化统计数据、图标展示页面,而 kibana4 则是一个全新的改版,与 kibana3&

#技术帖    #技术分享    #elasticsearch    #kibana   

200x200


概述mysqli 是 PHP 操作 mysql 数据库的一个扩展,它提供了面向对象与面向过程的两种调用方式在编译配置时,加上 --with-

#技术帖    #php    #mysql    #database   



京ICP备15018585号