一个朋友,在一家软件的大企业做了十年的软件研发,想出来创业,问我要注意什么。我开玩笑说,要想成功,必须学习互联网创业的“葵花宝典”,第一条就是“挥刀自宫”。
大的软件公司有很多资源,研发能力不错,各种推广资源也非常优越,但很少开发出来优秀的互联网产品。初步看上去,原因很多,比如很难调动个人的积极性、内部管理协调非常困难等。我认为还有一个重要的原因,就是方法不得当。大公司资源多,一个互联网创新项目,投入大量资源后,公司期望值高,考虑的问题自然多了,反而不容易做好。
从大公司离职出来创业,首先要“挥刀自宫”,干掉大公司这套做法,控制成本尽量少花钱,集中精力和资源解决核心的一两个问题就足够了。
不要想太多,不做太长时间的计划,尤其是计划不能太复杂!创业成功需要的是发现机会和快速突破的能力,再加一点运气。大公司的工作经验太多,有时候反而会限制自己的做法。 互联网创业,越简单越单纯,越容易成功!
1.专注:解决用户一个迫切的需求,解决的问题一句话就可以说清楚。
(1) 一个明确而且用户迫切需要的产品,很容易找到明确的用户群。这样,产品研发出来后,不容易走偏。(2) 选择的用户需求要有一定的普遍性,这点决定这个产品的未来市场前景。(3) 解决的问题少,开发速度快,也容易控制初期的研发成本和风险。(4) 解决明确问题的产品,容易给用户说清楚,推广也会相对简单。
2.极致:要在这个功能点上做到所有同类产品的极致,做到最好才能赢。
(1) 极致是互联网产品的核心,只要极致才能超出用户的口碑,形成口口相传的效应,给后期的推广带来了很大的便利。(2) 专注才能做到极致,做到极致才能击败竞争对手。
3.快:开发周期一定要控制在三到六个月的时间,一定要快。
(1) 互联网时代,用户需求变化比较快,而且竞争也比较激烈。快速的开发,容易适应整个市场的节奏,并且节约成本。(2) 用户试用过程中,如果发现问题,反应速度也要快,尽快改善尽快更新。初期,我认为要保持在一两周的更新速度。
More …
【摘要】关于成本控制的几点诀窍
1. 该花的钱一定要花,不该花的钱一分钱都不能花。
2. 省钱不是不花钱,不花钱可能造成更大的浪费。
3. 省钱就是赚钱,每省一块钱至少相当于赚三块钱。
4. (引用)“应付款是一定要付的,应收款是一定收不到的”
5. (引用)“在最贵的地方点最便宜的菜,在便宜的地方点最贵的菜”
第4条、第5条不是本人发明的,但我觉得讲得非常实在。
企业过冬的生存技能
步入2009年后,几乎所有人都领略到这次冬天的寒意。不少人问我,创业公司如何过冬。我的回答和大家一样,没有任何新意:现金为王,持有足够的现金量是生存的关键。我在二十年的职业生涯中,遭遇过多次冬天,甚至在1997年9月管理北京金山的时候差点发不出工资,所以无论压力有多大,我坚持企业安全第一,保持充足的现金量。有了足够的现金,的确可以轻松过冬。但我认为问题的核心不是现金,而是企业的基本生存技能:成本控制。
如何有效控制成本呢?这的确是一个非常复杂的问题,和大家分享一些我的经验。
一、建立全员成本意识
1. 控制成本的能力是任何企业都需要的基本技能。企业任何时候都需要控制成本,每个企业家都应该知道“勤俭治家”的重要性。在冬天的时候,股权融资、银行贷款都非常困难,企业的资金压力陡然增加,很多人束手无策,控制成本的压力立刻凸显出现。
2. 成本意识要从公司创建开始建立。互联网泡沫时期,资金成本比较低,创业公司比较容易融到了钱,开始“豪华型”创业。这些创业者没有过苦日子的经验,以为未来一帆风顺,就开始大把烧钱,租用奢侈的办公室、举办铺张的会议、乱砸市场费用等等。一旦遇到困难,或者市场环境发生剧烈变化,企业很容易倒闭。平时没有成本意识,真正遇到问题的时候再建立非常困难,由奢入俭难!
3. 成本意识只有要从老板开始,才有可能贯彻全员。如果老板不以身作则,不反复强调,不建立成本控制的体系,整个企业成本管理一定非常混乱,也不容易成功。比如,华人世界的首富李嘉诚,一块普通的电子表一戴就是二十多年,我相信李嘉诚旗下的企业成本控制一定会非常出色。再比如联想,柳传志认为联想的成功在于把毛巾拧干,也就是说联想成本控制做得非常出色。
More …
今天,官方已经正式发布 CentOS 6.2。6.1 发布仅一个多星期,6.2就发布了,这次的发布更新速度是CentOS历史上最快的一次。现在大多数网站镜像已同步完成。
各大镜像网站下载地址:
我们很高兴的宣布由淘宝网核心系统部开发的Tengine服务器终于正式开源了。
淘宝网是亚洲最大的电子商务网站,Alexa全球排名第12位。每天访问淘宝网的PV超过了几十亿。大压力的访问,对淘宝网的Web服务器提出了严苛的要求。经过一系列的对比,我们最终选择了Nginx作为我们的Web服务器,因为它性能高,又非常节省资源(CPU和内存),并且有足够的灵活性。
一开始我们使用Nginx还仅仅用它来处理静态文件、PHP等,接着我们又在Nginx上开发了几十个各种用途的模块。随着对Nginx的越来越了解,我们发现它本身已经不能够完全满足我们的需求了,所以我们就开始对Nginx核心进行定制和开发。考虑到我们开发的功能中的一些对其它的互联网用户也可能有用处,所以我们就想到了把这些公用的功能开源出来。淘宝网是开源软件的用户和受益者,我们也想成为开源软件的贡献者。这就是我们决定开源Tengine的原因。
Tengine基于最新的Nginx稳定版(Nginx-1.0.10),在它的基础上开发了一些功能和做了一些bug修复,比如:
- 组合多个CSS、JavaScript文件的访问请求变成一个请求;
- 支持管道和syslog形式的日志和抽样;
- 自动根据CPU数目设置亲缘性;
- 监控系统的负载和资源占用从而对系统进行保护;
- 显示对运维人员更友好的出错信息,便于定位出错机器;
- 更强大的访问速度限制模块;
- backtrace模块,程序崩溃的时候可以显示出错的调用栈;
- 根据文件类型设置过期时间;
- …
基本上,Tengine可以被看作一个更好的Nginx,或者是Nginx的超集。可以在这里下载:
http://tengine.taobao.org/download/tengine-1.2.0.tar.gz
在这里,我们想向Nginx团队致谢,尤其感谢Nginx的作者Igor Sysoev的伟大工作。我们也很乐意并在接下来的时间里将我们的工作成果捐献给Nginx官方。
坦率的讲,现在Tengine的特性还不够多,但这是我们将我们在Nginx上的工作推向开源的第一步。我们已经围绕Tengine组建了一个团队,而且内部还有一个很长的计划列表。Tengine开源不是项目开发的结束,而是开发的开始。相信接下来大家会看到我们在Tengine上的更多工作进展。
来源:http://tengine.taobao.org/opensource_cn.html
查看了一下淘宝网的服务器标头信息,确实显示是Tengine:
PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题。要提高Linux系统下的负载能力,可以使用nginx等原生并发处理能力就很强的web服务器,如果使用Apache的可以启用其Worker模式,来提高其并发处理能力。除此之外,在考虑节省成本的情况下,可以修改Linux的内核相关TCP参数,来最大的提高服务器性能。当然,最基础的提高负载问题,还是升级服务器硬件了,这是最根本的。
Linux系统下,TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优化TCP的内核参数,来及时将TIME_WAIT状态的端口清理掉。
本文介绍的方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效,如果不是这种情况下,效果可能不明显。可以使用netstat命令去查TIME_WAIT状态的连接状态,输入下面的组合命令,查看当前TCP连接的状态和对应的连接数量:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
这个命令会输出类似下面的结果:
LAST_ACK 16
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18098
我们只用关心TIME_WAIT的个数,在这里可以看到,有18000多个TIME_WAIT,这样就占用了18000多个端口。要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下Linux的TCP内核参数,让系统更快的释放TIME_WAIT连接。
More …
PS:整理一些Linux Web服务器网站故障分析常用的命令,内容均来源于网络。如果你是老手,什么好的命令集或者必杀技欢迎留言,丰富此文!
系统连接状态篇:
1.查看TCP连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' 或
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
2.查找请求数请20个IP(常用于查找攻来源):
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
3.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
More …
一直在linux下开发的人一定会用到tcpdump,下面就是关于tcpdump的使用方法说明
(1). tcpdump的选项
-a 将网络地址和广播地址转变成名字; -d 将匹配信息包的代码以人们能够理解的汇编格式给出; -dd 将匹配信息包的代码以c语言程序段的格式给出; -ddd 将匹配信息包的代码以十进制的形式给出; -e 在输出行打印出数据链路层的头部信息; -f 将外部的Internet地址以数字的形式打印出来; -l 使标准输出变为缓冲行形式; -n 不把网络地址转换成名字; -t 在输出的每一行不打印时间戳; -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息; -vv 输出详细的报文信息; -c 在收到指定的包的数目后,tcpdump就会停止; -F 从指定的文件中读取表达式,忽略其它的表达式; -i 指定监听的网络接口; -r 从指定的文件中读取包(这些包一般通过-w选项产生); -w 直接将包写入文件中,并不分析和打印出来; -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
(2). tcpdump的表达式
More …
其实Apache本身的并发能力是比较强大的,但是Debian/Ubuntu默认安装的是Prefork模式下的Apache。所以导致很多人后面盲目的去使用lighttpd或nginx一类替代软件。但是这类软件有一定的兼容问题,部分情况下可能工作的并不好。那么, 是不是Apache并发就不行了呢?答案当然是否定的。
在进行配置之前,我们首先要知道什么是Prefork模式,什么是Worker模式,什么是Event模式,以及什么是MPM。
MPM是Apache2引入的一个概念,就是将结构模块化。把核心任务处理作为一个可插拔的模块,即MPM,使其能针对不同的环境进行优化。在这个情况下,就诞生出了处理模式的概念。处理模式现在分为Prefork、Worker、Event三种。
Prefork MPM基于非线程模型,和Apache 1.x版本中的处理方式很相似。Prefork MPM在所有情况下都很安全,对运行非线程安全(non-thread-safe)模式的软件如PHP,它是唯一的安全选择。对于某些应用程序,包括在 Apache 1.3上非常流行的程序(如简单静态页面、CGI脚本等),Prefork MPM是最好的选择。另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。但是由于每一个请求都会产生一个新的进程,导致系统资源(尤其是内存)消耗的很快,一旦并发量较大的时候,大量的Apache进程会占用巨大的内存空间。
而Worker MPM基于线程模式,具有内存消耗低(对繁忙的服务很重要)、扩展性在某些特定应用情况下比Prefork更好等优点。在这个模式下,采用的进程和线程混合的形式处理请求。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的Prefork模式。
More …

