Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 如何让您的代码为负载平衡做好准备_Language Agnostic_Load Balancing - Fatal编程技术网

Language agnostic 如何让您的代码为负载平衡做好准备

Language agnostic 如何让您的代码为负载平衡做好准备,language-agnostic,load-balancing,Language Agnostic,Load Balancing,正如我们在过去所做的那样,我想为每个转向负载平衡的人收集有用的信息,因为您的代码必须注意一些问题 我们从一台apache服务器迁移到squid作为反向代理/负载平衡器,后面有三台apache服务器 我们使用的是PHP/MySQL,因此问题可能有所不同 我们必须解决的问题: 会议 我们从“默认”php会话(文件)转移到分布式memcached会话。简单的解决方案,必须做到。这样,您也不需要在负载平衡器上使用“粘性会话” 缓存 对于每个Web服务器的非分布式apc缓存,我们为分布式对象缓存添加了另一

正如我们在过去所做的那样,我想为每个转向负载平衡的人收集有用的信息,因为您的代码必须注意一些问题

我们从一台apache服务器迁移到squid作为反向代理/负载平衡器,后面有三台apache服务器

我们使用的是PHP/MySQL,因此问题可能有所不同

我们必须解决的问题: 会议 我们从“默认”php会话(文件)转移到分布式memcached会话。简单的解决方案,必须做到。这样,您也不需要在负载平衡器上使用“粘性会话”

缓存 对于每个Web服务器的非分布式apc缓存,我们为分布式对象缓存添加了另一个memcached层,并用它替换了所有旧的/过时的文件缓存系统

上传 上载转到共享(nfs)文件夹

我们针对速度优化的内容: 静态文件 我们的主NFS运行lighttpd,提供(也包括用户上传的)图像。Squid知道这一点,并且从不查询apache节点中的图像,这大大提高了性能。Squid还配置为在ram中缓存这些文件

你做了什么来让你的代码/项目为负载平衡做好准备,人们在考虑这一举措时还有什么其他顾虑,以及你使用的是哪种平台/语言?执行此操作时:

对于http节点,我努力争取一个单一的系统映像(ocfs2很好),并根据场景使用pound或crossroads作为负载平衡器。节点应该有一个小型本地磁盘用于交换,以避免CDSL的大部分(但不是全部)麻烦

然后我把Xen加入到混合物中。如果您在Xenbus上放置少量的临时信息(即Linux实际上承诺给每个VM进程的虚拟内存量,又称Committed_AS),您就可以快速检测到一个大脑恒载平衡器并对其进行调整。甲骨文也意识到了这一点。。现在正在努力改进Linux中的气球驱动程序

在这之后,我研究了在sqlite3中拆分任何给定应用程序的数据库使用情况以及应用程序本机想要的任何db的成本,同时意识到我需要拆分db,以便posix_fadvise()能够完成它的工作,并且不会不必要地污染内核缓冲区。因为大多数DBMS服务都希望自己进行缓冲,所以还必须让它们自己进行集群。这实际上决定了我使用的DB集群的类型以及我对balloon驱动程序所做的操作

然后,Memcache服务器从一个精简的initrd启动,而特权域会监视它们的内存和CPU使用情况,以便知道何时启动更多

心跳/接管的选择实际上取决于给定的网络和集群的预期使用情况。这一点很难一概而论

最终结果通常是5或6个物理节点,在连接到镜像存储时启动虚拟机监视器+来宾,并占用大量内存

存储也很难用一般术语来描述。。有时我使用集群LVM,有时不使用。当LVM2最终离开其当前基于字符串的API时,不会发生变化

最后,所有这些协调的结果都类似于根据通过Xenbus通信的事件动态更新配置。这包括ocfs2本身,或者配置不能驻留在单个系统映像上的任何其他服务

这实际上是一个特定于应用程序的问题。。你能举个例子吗?我喜欢memcache,但不是每个人都能从中受益。我们是在审查您的配置还是在讨论一般的最佳实践

编辑:


很抱歉以Linux为中心。。。这通常是我在设计集群时使用的工具。

NFS是否足够健壮?是的。nfs主要用于写操作或文件读取(请参阅我们的lighttpd解决方案)不要经常使用nfs。+1感谢您非常技术性的回答,实际问题在我的文章末尾;)“你做了什么来让你的代码/项目为负载平衡做好准备,人们在考虑这一举措时还有其他担心吗?”=更具体的代码“应该没关系”不是一个好答案,我需要知道你是如何使用内存的。还有,什么平台?这个问题很好,但也很笼统。。就像“耐力跑的最佳策略是什么?”。。然后,我会回答“仅在被追踪时运行”。好的,我会在设置中添加更多细节,但我想收集其他所有web语言的信息/报告;)