摘要: 有一个新项目,在测试环境部署后,发现tomcat进程耗费的CPU非常高,排查过程如下: 日志搜集 先通过top,查找耗费CPU最高的线程 top Hp pid 将线程ID转为16进制 printf "%x\n" threadid 搜集JVM的栈日志 jstack pid ~/jvm.stack.lo 阅读全文
posted @ 2018-07-24 19:43 周昌炬 阅读(4857) 评论(0) 推荐(0) 编辑
摘要: 问题描述 最近有台服务器偶尔会报502错误,虽然量不多,每天就几十个,但是也必须得找到原因,避免让小问题变成大问题。 排查过程 502错误的原因,一般是对用户访问请求的响应超时造成的,一开始以为是请求量太大,超过了服务器目前的负载,但是查看了zabbix监控,发现问题时段的负载、内存、IO都没有非常 阅读全文
posted @ 2017-03-02 09:25 周昌炬 阅读(1584) 评论(0) 推荐(3) 编辑
摘要: 组员工作安排 工作职责 我的工作 组员的工作 如何才能接纳更多的需求? 我们如何才能更高效的工作? 阅读全文
posted @ 2014-10-07 12:21 周昌炬 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 知悉提前了解接下来的工作计划,便于有条不紊的安排任务。我自己需要提前和产品经理联系,了解项目计划;同时整理后,通知组员,让他们了解接下来的任务安排。避免突发性问题对于现有计划的扰乱,以及对工作情绪的影响-人的情绪里,天生就抵触计划之外的内容。屏蔽需求、方案未确定前,先不要让组员参与细节。写程序是一个... 阅读全文
posted @ 2014-10-07 12:20 周昌炬 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 近期离职同事较多,且老项目也经常出现问题,需要接手的项目和阅读的代码也比较多,这里总结一下遇到的问题,以及一些方法。问题一开始就往代码细节上钻越是复杂的项目,这样做越是悲剧,你可能花费大量时间从代码上层层往下钻,结果却发现对于整体的功能根本无法掌握,最后迷失在源码中,给自己带来压力。因为复杂的项目,... 阅读全文
posted @ 2014-05-13 12:03 周昌炬 阅读(1368) 评论(1) 推荐(0) 编辑
摘要: 我们会在哪些地方耗费大量的时间压缩需求确认时间的矛与盾做项目的时候,一方面我们希望能够快速明确需求,开始投入开发,使产品能够尽快上线;另一方面,我们又深知需求会随着时间的推移越来越明确,就下意识的拖长这个流程。需求细节的确认需求应该确认到多细才合适?如何把握这个粒度?方案优与劣的选择这是最难的一个环... 阅读全文
posted @ 2014-05-13 09:19 周昌炬 阅读(2737) 评论(2) 推荐(1) 编辑
摘要: 直接上代码:val = 1;print_r($obj2);上述代码的输出结果为:// number1// ArrayArray( [0] => 1 [1] => 2)// ObjectstdClass Object( [val] => 1)由此可以看出,将一个变量赋值给另外一个变量,如果是对象,那么就是引用赋值;如果非对象(数值、字符串、数组等),就是重新分配内存空间。 阅读全文
posted @ 2013-07-13 10:14 周昌炬 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 性能优化不是某一个人的职责范围,也不是某一个开发阶段的工作内容,而应该是贯穿整个开发流程、每个人员都参与的活动。如果等到项目上线后再进行优化,会导致我们成为需求的被动接受者。为了避免这种情况,我们应该主动出击,在项目初始阶段就将性能问题融入进去。需求讨论阶段开发人员分析实现方案,提出建议,在不影响产... 阅读全文
posted @ 2013-07-09 08:37 周昌炬 阅读(2217) 评论(5) 推荐(2) 编辑
摘要: 由于我们的产品经常是由多个部门合作开发的,常常会用到其他部门提供的http数据接口。比如我们可能在一个产品中接入论坛部门的功能、接入SNS部门的功能、或者接入搜索部门的功能等等。这种情况下,我们会频繁请求其他部门的接口。如果通过域名的方式来访问这些接口的话,会因为DNS解析造成一些性能上的浪费。先来看看DNS解析的流程:可见,在没有本地缓存的情况下,这个过程是比较繁琐的。由于这些接口都是在公司内部服务器之间调用,我们是可以知道接口对应的IP地址的,因此,完全可以通过指定IP来避免域名解析的过程。实现起来也很简单,只要在/etc/hosts中指定IP即可,比如针对上面这个图片内容,可以这样配置: 阅读全文
posted @ 2013-04-23 09:19 周昌炬 阅读(1301) 评论(9) 推荐(3) 编辑
摘要: 最近需要针对现有的一些线上产品,进行优化工作。首先得对这些产品的性能做一个统计,找出目前问题最严重的,优先进行改进。前面我都是通过在自己本地电脑上测试,利用诸如YSLOW、PageSpeed之类的工具来检测性能。但是通过这些方法,得到的结果都是比较理想的,没有并发因素,网络也因为是内网环境,非常给力,每个产品体现出来都还挺快。因此最终还是决定搜集用户端真实的页面加载耗时来作为参考标准。在考虑如何搜集用户端数据的过程中,一开始,是准备在页面上通过JS进行埋点,类似这种方式:<script>T = T || {};T.beforeHead = new Date().getTime(); 阅读全文
posted @ 2013-04-19 09:38 周昌炬 阅读(2208) 评论(3) 推荐(1) 编辑