我有一个使用PHP进程控制(pcntl)函数并行发送多个请求到SNS服务的工作层。 我的问题是如何最好地调整MPM_PREFORK指令以获得最佳的开箱即用,以及如何计算我可以使用可用资源运行的最并发的PHP进程。 我正在运行一个T2媒体,这是这样specid: Model |vCPU | CPU Credits / hour | Mem (GiB) | Storage t2.medium | 2 | 24 | 4 | EBS-Only 此外,如果有人可以阐明如何使用/计入CPU计算,我将非常感激。 我目前在这些post中应用了这些思想。 tune apache performance using mpm prefork module http://fuscata.com/kb/set-maxclients-apache-prefork 任何帮助非常感谢
在过去的几周里,我花了很多时间评估不同的方式将应用程序部署到云上(让我们假设AWS为这个问题),但是却找不到令人满意的解决scheme。 我们有一个非常标准的设置: Rails应用程序 Sidekiq工作者 Cronjobs 自动缩放 弹性豆茎非常容易设置为导轨部分,但吸吮sidekiq和cronjobs。 在查看coreos及其所有function/工具之后,我们确信这是最简单的解决scheme。 对于rails,sidekiq和cron,同样的Docker镜像,但是都有不同的CMD 。 现在,玩弄fleet和十二个ec2实例,我无法理解它背后的哲学: 全球单位有点“螺栓上”,不允许status或journal命令。 他们也是在不久之前被介绍的,暗示他们不是处理东西的主要方式。 但唯一的方法是运行像myservice{1..9}.service这样的东西。 全局单元与自动扩展一起工作 – 一旦新实例启动并连接到集群,集群将启动容器(如果元数据匹配)。 但似乎没有办法更新图像没有宕机,再加上上述缺less的命令和工具。 使用第二种方法,自动缩放不会带来任何好处,因为我必须指定我需要的确切数量的副本。 顺便说一下,这似乎也是与kubernetes的情况! 因此,由于许多大公司都运行docker集装箱,当然是自动缩放的(尤其是谷歌与Kubernetes),如何build立一个简单的自动缩放docker环境,而不必手动更改容器的数量? 注意:我甚至不需要像资源pipe理这样的复杂的答案(就像ECS那样,但这是另一回事)。 真的,我所需要的只是一种在实例上扮演angular色的方法,并且有一个工具,可以确保此实例在启动后运行正确的容器,包括滚动更新。 也许现在没有什么好的答案,因为我在网上找不到任何令人满意的东西。 但也许有人有几个build议。 谢谢!
我已经尝试在我的免费AWS实例上设置nginx,以便它可以在单个IP地址上托pipe多个域(不确定是否可以pipe理,但是我正在试图挖掘)。 在这个过程中,我在/etc/nginx/sites-available创build了dancemilkdance.com文件,并且还有默认文件。 默认是听81和dancemilkdance.com听80,正在玩试图看看会发生什么,现在他们都在听80(dancemilkdance.com有default_server现在),但它一直redirect到端口81。 每次更改后,我重新启动服务,也使用sudo nginx -t来检查一切是否正确。 我将在这里放置nginxconfiguration,以便您可以看到它。 注1)我不想删除默认文件,而是设法真正find这个问题的根源 注2)如果你有一个解决scheme,将工作在多个领域,将是伟大的 注3)即使一个提示就足够了 dancemilkdance.com server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name dancemilkdance.com www.dancemilkdance.com; access_log /var/log/nginx/dancemilkdance.com.access.log rt_cache; error_log /var/log/nginx/dancemilkdance.com.error.log; root /var/www/dancemilkdance.com/htdocs; index index.php index.html index.htm; include common/php.conf; include common/wpcommon.conf; include common/locations.conf; include /var/www/dancemilkdance.com/conf/nginx/*.conf; } 默认 server { listen 80; listen [::]:80; root /var/www/html; index index.html index.htm […]
我是新的使用Amazon ECS,我想知道如何设置服务,以便容易地扩大/缩小一个容器。 这是我的项目架构: 网站:容器与网站,只提供html页面和javascript / css /图像。 听80。 api:在NodeJS中开发的API服务json的容器。 听443。 rabbitmq:容器与rabbitmq。 api容器被链接到它。 worker:等待来自rabbitmq(也链接到它)的命令并处理它们的容器,然后将答案发送回rabbitmq。 现在,我只用我的所有容器创build了一个任务定义,而在我的集群中,我只有一个服务。 我也有API的负载平衡器(所以我可以从网站通过DNS名称访问它)。 它工作的很好 ,但是我希望能够发起更多的工作,而不需要启动其他任何东西,而且现在我似乎也无法做到这一点(纠正我,如果我错了)。 所以我有几个问题: 我是否需要创build单独的任务定义? 我是否需要创build单独的服务? 如果我为每个容器创build一个任务定义(因此前面有网站 ,带有API ,带有rabbitmq的 代理和带有worker的worker ),我仍然可以将容器链接在一起,即使它们不在同一个任务定义中。 这是我目前的任务定义: { "taskDefinitionArn": "arn:aws:ecs:ap-southeast-2:347930943102:task-definition/Flipendo:4", "revision": 4, "containerDefinitions": [ { "volumesFrom": [], "portMappings": [], "command": [], "environment": [ ], "essential": true, "entryPoint": [], "links": [ "rabbitmq" ], "mountPoints": [], "memory": 2048, […]
目前使用Amazon Web服务,我成功地在Elastic Beanstalk(具有绿色群集运行状况)上将多个应用程序部署为Docker容器。 但是,当我尝试使用控制台获取日志时出现问题; 当我做“请求日志”时,没有发现日志。 当我在请求日志后返回仪表板时,出现了一个新的事件/错误: [Instance:i-123456789]命令在实例上失败。 返回码:1输出:bundleLogs.py –conf-path'/opt/elasticbeanstalk/tasks/bundlelogs.d/*'–location-prefix'resources / environments / logs / bundle /'无法执行任何方法publish_contents_from_filename的目标对象。 有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。 试图解决这个问题,我SSH进入我的集群,并使用下面的命令来find我的Docker容器中的日志: sudo docker exec myinstance cat /var/log/logstash_activity.log 我的日志按预期发现。 试着更多地了解这个错误,我查看了/var/log/eb-activity.log并find了以下几行: [2015-07-06T12:54:30.137Z] INFO [26993] – [CMD-BundleLogs] : Starting activity… [2015-07-06T12:54:30.363Z] INFO [26993] – [CMD-BundleLogs/AddonsBefore] : Starting activity… [2015-07-06T12:54:30.363Z] INFO [26993] – [CMD-BundleLogs/AddonsBefore] : Completed activity. [2015-07-06T12:54:30.363Z] INFO [26993] – […]
所以这是我的情况:我们是一个年轻的初创公司,我们决定尝试给Mesosphere DCOS社区版。 社区版使用模板在AWS CloudFormation上部署了一堆Master,Slaves和LB。 ( 我们的模板 )(编辑模板以使用现有的VPC导致错误:模板validation错误:模板格式错误:模板Unresolved resource dependencies [<target_vpc_id>] in the Resources block of the template ) 社区版有两个限制(我似乎无法find这些限制logging在哪里): 它不能被部署在现有的VPC上。 它为每个新的部署创build一个单一AZ的VPC。 现在,我们希望启用这个新的群集来与RDS进行通话。 显然,我们遇到了问题: RDS实例不能部署在单一AZ的VPC上 RDS VPC可以与DCOS VPC对等,但由于RDS实例只有一个端点(没有静态IP),必须从其他VPCparsing为本地地址而不是全局IP。 处理这种情况的最好方法是什么? 编辑:所以,我添加了一个私人的RDS实例,它的端点现在正确parsing到其本地IP地址从任何地方。 现在,我的DCOS群集位于VPC中, 10.0.0.0/16让我们调用这个VPC-A ,而我的RDS实例在VPC-B ,它是172.31.0.0/16 。 现在为了实现两个networking之间的通信,我在VPC-A和VPC-B之间增加了VPC对等。 接下来,我在VPC-B设置路由为:Destination:10.0.0.0/16 Targent: <vpc_peering_id> 在VPC-A中:目标:172.31.0.0/16目标: <vpc_peering_id> VPC-B的目标RDS实例的安全组设置入站所有通信所有端口CIDR:10.0.0.0/16 VPC-A源实例的安全组设置:出站:所有stream量所有端口CIDR:0.0.0.0/0 但是再一次,我仍然无法build立从VPC-A到VPC-B任何连接。 我还检查了属于VPC-A所有实例的安全组设置:允许所有出站通信。 而在VPC-B :所有来自10.0.0.0/16stream量都被允许在端口3306 。 这里发生了什么?
我正在AWS上为一个处理大量实体的系统devise云架构。 我希望这是这个问题的正确的StackExchange(所以对我来说看起来并不合适 – 随意迁移问题)。 问题描述 对于数据库中的实体(对象可以通过它们的键 – 基本上是一个noSQL DB),我有一个很大的数字(假设n = 1 000 000 )。 我有一个algorithm,能够采取两个对象,并产生一个值,表明它们的相似性(可以说,计算大约10毫秒)。 系统应该能够将一个任意实体与我的数据库中的所有实体进行比较,并且还能够识别我的数据库中的所有重复项(这意味着将每个实体与其他实体进行比较!)。 devise DynamoDB(或用于我的实体的类似的noSQL存储) 处理器 – 在EC2上运行的主要服务,它将加载所有实体密钥,并将计算请求放入可扩展队列(SQS) – 为其他工作人员分配工作量 工作负载队列 – 计算请求队列 工人 – 部署到ElasticBeanstalk的服务连接到工作负载队列。 工作人员连接到数据库,获取要比较的实体并运行algorithm 结果DB – 无论是关系型数据库还是非关系型数据库,都有来自工人的结果 我把它写在纸上,做了一些基本的估计(合理数量的工人使用多个线程),并发现执行双重身份识别需要太多的时间 – 这对于“一对多”比较是合理的,但试图执行1000000 ^ 2操作太多了。 我正在考虑在MapReduce中使用Hadoop,但是似乎我不得不为每个“一个对其他人”的比较启动一个新的工作(并且运行百万个工作听起来不是很快)。 因此,如果我的devise更好,克服这些缺陷,我会非常高兴。 而且,任务(每个比较)甚至可以执行而不需要运行数百个强大的实例(价格也是限制)。
我想弄清楚这个解决scheme: 我有一些使用命令useradd创build的用户。 我想让这个用户在特定位置做任何他想做的事情,比如/ var / www /。 他可能需要上传或下载文件,提取压缩文件夹,列出文件和文件夹,更改权限等。 他应该被限制做其他任何事情,如创build另一个用户/组,使用sudo,安装/卸载任何东西,甚至访问其他文件夹或任何其他。 有没有可能做到这一点? 有人可以帮助我最早。 FYI:OS:Linux,任何平台:AWS
我很难过 我有两个由AWS CloudWatch代理监视的日志文件。 第一个,/ /var/log/nginx/access.log ,工作得很好。 第二个是/var/log/otherserver/access.log ,没有任何变化。 并不是最终, 除非我重新启动代理程序,否则它会根据预期提取更改并将其发送到CloudWatch。 /var/log/otherserver/access.log是一个从另一台服务器上定期从rsync中读取的日志文件,它不能安装代理。 命令如下所示: rsync -av user@host:/var/log/access.log /var/log/otherserver/access.log 代理程序一定可以读取它,因为它在重新启动后读取更改。 条目在configuration文件中的位置似乎不重要。 rsync日志文件的日志条目中的date与服务器相同(一切都是UTC)。 如果我移动日志文件,代理开始抱怨: 2015-12-14 16:02:26,158 – cwlogs.push.stream – WARNING – 3344 – Thread-1 – No file is found with given path '/var/log/otherserver/access.log'. 这第二个日志文件的configuration与第一个(下面)几乎相同。 [website.access.log] #datetime_format = 09/Dec/2015:14:15:02 +0000 datetime_format = %d/%b/%Y:%H:%M:%S %z file = /var/log/otherserver/access.log log_stream_name = master-platform.sh […]
我已经在我的aws china实例中设置了一个每日备份脚本,将我需要的file upload到s3存储桶。 我有一个恢复脚本,它使用s3api将对象恢复到实例。 用于获取文件的命令是aws s3api get-object,但是一旦运行该命令,就会出现以下错误。 调用GetObject操作时发生客户端错误(MethodNotAllowed):指定的方法不允许针对此资源。 当我使用相同的命令恢复AWS US East环境中的文件时,我可以恢复该文件,但在中国环境中不能这样做。 我使用了一个类似的命令aws s3api list-objects列出了我的桶中的对象。 这是在美国以及中国的环境下工作。 我很困惑,为什么我可以列出我的对象,但不能使用get操作。