大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!

作者 Anonymity Reagan 译者 俞黎敏 发布于 2007年12月2日
目前可以用来调试Java应用程序的工具令人叹为观止。现代IDE提供了全功能的调试界面,并且像GlassBox这样的工具用BCI(bytecode instrumentation)提供了关于应用程序运行时状态的更多信息。虽然你有时候会发现自己处于无法使用这些工具的境地,或许应用程序被部署在防火墙的另一端,不允许你远程调试;或许你正在客户那里,没有你喜欢的工具可用。现代调试工具使用的大多数信息和方法都由JVM自己提供,并具有控制这种信息而不用最新图形工具的一些方法。本文关注一些可用的调试方法,它们只使用Java SDK(JDK)自带的那些工具。
JDK携带的主要调试工具是jdb,这是一种命令行调试器,它将附到一个在运行的VM,并允许你设置断点(breakpoint)、逐步跟踪代码、检验变量并评估表达式的值。JRE没有包括JDB,因此你需要安装JDK。
如果你知道如何利用IDE中内建的任何调试器调试Java应用程序,你就可以迅速地学会利用JDB进行调试。为了允许JDB或者任何调试器连接到一个在运行的JVM,JVM必须通过许多命令行参数来启动。这些参数促成JVM去加载和初始化调试库,配置传输并打开一个socket。例如,要配置VM在端口8000监听调试连接,你应该使用类似于下面的命令行选项:
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8000
你现在可以利用下面的命令行用JDB连接:
jdb -attach 8000
或者在Windows上:
jdb -connect com.sun.jdi.SocketAttach:port=8000
一旦连接上,你应该看到JDB提示。
你现在连接到了JVM,可以开始调试你的应用程序了。你想要做的第一件事可能是设置一些断点。在JDB中设置断点有三种方法。
当你的应用程序触发断点时,JVM将中止执行,并等待你告诉它接下来要利用JDB做什么。你可以跳过去,进入到方法调用里面,检查本地变量,并评估表达式,为了获得一个可用命令的列表,可以输入help来得到它。
虽然利用JDB调试比用为你显示源代码行的图形调试器更慢,但是只要你访问源代码,就可以获得与利用JDB相同的效果。
不建议你通过调试参数运行产品应用程序,因为使用这些参数的时候,有一个性能和安全问题。但在测试、开发期间以及检查某类产品问题的时候,JDB都是一种非常有用的工具。
关于JDB的更多信息,请见Sun的文档:http://java.sun.com/j2se/1.3/docs/tooldocs/win32/jdb.html。
现代的Java和Jave EE应用程序有许多线程,它们全都彼此交互,并连接到外部系统。Java提供了一种获取在VM中运行的所有线程的调用堆栈快照的方法。这个的输出称作Thread Dump,它是大量的堆栈轨迹(每个线程一个),以及关于线程优先级和它持有或等待的任何锁或监视器的信息。
生成Thread Dump在不同的操作系统中做起来也不同。在Windows中,是在JVM运行的控制台窗口中按下Ctrl-Break。对基于Linux和Unix的系统,则用kill命令将SIGQUIT发送到JVM。这可以通过命令kill – 3
现代的企业Java应用程序中,经常有大量的线程,它们中有许多都没起任何作用。你可以用许多种方式来辨别重要的线程。
线程持有或者等待的任何锁或者监视器都在轨迹中指定,因此死锁以及其他同步相关的问题,都可以通过分析哪些线程在等待或者持有哪些锁和监视器进行辨别。
在性能调优或者调试慢运行应用程序时,它对相隔几秒钟生成许多Thread Dump并对它们进行比较会很有利。这样让你知道应用程序的哪些部分正在缓慢地运行着,而不必使用更高级的性能分析工具。
从Java SE 5开始,Sun给JVM运行时信息提供了JMX API作为Java SE的一部分,Sun还提供了一种工具,用来在一个正运行的JVM内部查询MBeans。这个工具是jconsole,并且就像jdb一样,它是与JDK捆绑在一起的。
为了允许jconsole连接到你的VM,你需要增加许多命令行参数。
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=20001
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
当你运行jconsole时,它将在你的机器上侦测VM运行,并问你想要连接到哪一个。一旦你连接上了,摘要(Summary)屏幕就会显示大量关于VM的信息,让你访问使用关于它线程的运行时信息、堆的使用(Heap Usage),以及所有变得能通过JMX MBeans使用的信息。通过将MBeans增加到你的应用程序中,有可能使你的应用程序信息能通过JMX控制台以及用JMX接口收集它们信息的其他工具来使用。利用JMX将监视功能增加到你的应用程序,则是另一篇文章的主题了。
关于使用jconsole的更多信息,请见:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html。
这些工具虽然不完整,或者不像你习以为常的工具那么容易使用,但它们仍然提供了很多你可以用来分析和调试你应用程序的信息。基本熟悉了它们之后,就可以快速解决问题,否则要花数天进行调查,因此值得花时间去体验它们,并了解它们是如何工作的。
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
没有回复
关注此讨论 回复