小编djt*_*djt的帖子

MYSQL从每个类别中选择一个随机记录

我有一个数据库,其Items表格看起来像这样:

id
name
category (int)
Run Code Online (Sandbox Code Playgroud)

有几十万条记录.每个都item可以是7个不同的一个categories,对应一个categories表:

id
category
Run Code Online (Sandbox Code Playgroud)

我想要一个从每个类别中选择1个随机项的查询.什么是接近它的最佳方式?我知道使用Order By rand()LIMIT 1类似的随机查询,但我从来没有做过这样的事情.

mysql sql random sql-order-by

6
推荐指数
1
解决办法
8742
查看次数

Laravel - 作业在一台服务器上分派,在另一台服务器上处理

我正在研究 Laravel 应用程序的日志记录方面,amd 计划将数据发送到 SQS 以便稍后检索。但是,我想将作业从我的生产服务器分派到 AWS 队列,然后有一个队列在单独的 Logging 服务器上工作,该服务器侦听队列。

我了解如何设置 Queue worker 来监听 Queue,但是,Laravel 的 Jobs 是自我处理的。因此,当 Logging 服务器上的 worker 从 SQS 检索消息时,它会在相同的命名空间(具有相同的类名)中寻找作业来处理它。有没有办法以不同的方式处理这个问题,或者我只需要在日志服务器上命名作业处理程序,与生产服务器上的作业调度程序相同。

queue amazon-sqs supervisord laravel

6
推荐指数
1
解决办法
2790
查看次数

HashiCorp Vault - 生产中的设置/架构

我正准备用我的网络应用程序设置HashiCorp Vault,虽然HashiCorp提供的示例很有意义,但我还不清楚预期的生产设置应该是什么.

就我而言,我有:

  • 少量AWS EC2实例为我的Web应用程序提供服务
  • 一对EC2实例为Jenkins提供连续部署服务

我需要:

  • 我的配置软件(Ansible)和Jenkins能够在部署期间读取秘密
  • 允许公司中的员工根据需要读取秘密,并可能为某些类型的访问生成临时密码.

我可能会使用S3作为Vault的存储后端.

我的问题类型是:

  1. 是否应该在我的所有EC2实例上运行保险库,并在127.0.0.1:8200收听?

  2. 或者,我是否只创建一个实例(可能是2个可用性),只运行Vault并根据需要将其他实例/服务连接到秘密访问?

  3. 如果我需要员工能够从本地机器访问机密,那该怎么办?他们是否在本地针对S3存储设置了保险库,还是应该从步骤2访问远程服务器的REST API来访问他们的秘密?

  4. 并且要明确的是,任何运行保险库的机器,如果它重新启动,那么保险库需要再次启封,这似乎是涉及x个密钥持有者的手动过程?

sysadmin amazon-web-services jenkins hashicorp-vault

6
推荐指数
1
解决办法
884
查看次数

了解生产中的 Docker

我一直在学习如何使用 Docker 来设置开发环境,但是,我很好奇这些想法如何转化为生产堆栈。举个例子,我有一个 Laravel (Php) 应用程序,它使用 MySQL、Redis 和 Nginx

因此,在生产中,假设我通常在 AWS 上的负载均衡器后面有 2 个应用程序 ec2 实例。使用 Docker 设置类似的生产环境时...

1) 因为我将使用 RDS 和 Elasticache,所以不需要这些容器。那么基本上,我只需要 PHP-Fpm 和 Nginx 的容器?

2) 为了获得高可用性,我在 ELB 后面仍然有 2 个(或至少超过 1 个)ec2 实例。所以我想每个实例都会运行上述容器(PHP 和 Nginx)。但这听起来与我之前的虚拟机设置没有什么不同,其中每个服务器都运行为应用程序提供服务所需的内容。准确吗?

3) 对于虚拟机,我传统上会将代码烘焙到 AMI 中,并将这些 AMI 添加到启动配置和 Auto Scaling 组,该组将根据需要启动实例。因此,对于部署,我将拆除旧的 ec2 实例并启动新的实例。使用 Docker,由于这些容器将在 ec2 实例上运行,我是否仍然需要启动/拆除虚拟机,或者我只需更换容器并保持虚拟机运行?

docker

6
推荐指数
1
解决办法
705
查看次数

多对多的关系

在Yii中,我看到了处理多对多关系的各种不同方式.然而,我看到的例子并没有完全充实,我觉得我错过了一些东西.

例如,Larry Ullman的教程不使用self :: MANY_MANY关系 - http://www.larryullman.com/2010/08/10/handling-related-models-in-yii-forms/

因此,就添加和检索记录而言,在模型,控制器和视图中处理多对多的标准方法是什么?

澄清:我想我正在寻找一个涉及2个表的例子,由多对多相关,我不仅可以看到两个模型,还可以看到控制器和视图,所以我可以完全理解发生了什么.

php many-to-many yii

5
推荐指数
1
解决办法
1万
查看次数

Objective C - 何时使用 NSNumber 与 Primitive

如果您知道某个 Integer 在其生命周期的至少一个时刻需要用作对象,是否应该NSNumber从一开始就声明并使用它?

我知道计算应该使用原始数据类型来完成,所以你说[NSNumber numberWithInteger: myInt]。但是,如果 90% 的时间您只需要一个基本数据类型,那么另外 10% 的时间是否有理由创建NSNumber并不断使用它[NSNumber intValue]来检索您的原语?尽可能长时间地坚持使用原语是否会带来明显的性能优势,或者 OO 的优势是否会NSNumber超过这些优势?

作为 Objective C 的新手,我也很好奇最佳实践是什么——来自 Ruby 和 PHP 等不会发生这种情况的语言。

objective-c ios

5
推荐指数
1
解决办法
1003
查看次数

Laravel - 队列工作者,高 CPU

我有一个 Laravel 应用程序(在 Forge 上),它正在向 SQS 发布消息。然后,我在 Forge 上有另一个盒子,它正在运行 Supervisor 和队列工作人员,这些工作人员正在使用来自 SQS 的消息。

现在,我只有一个守护进程工作者处理来自 SQS 的特定数据管。当消息出现时,确实需要一些时间来处理 - 30 到 60 秒不等。盒子上的内存使用情况很好,但 CPU 几乎立即飙升,然后一切似乎都变得更慢。

有什么办法可以处理这个问题吗?我是否应该分派许多较小的工作(可以由多个工人使用)而不是一项不能在工人之间分配的大型工作?

另外,我注意到 Supervisor 仅使用我的两个核心之一。有什么办法让它同时使用吗?

php amazon-sqs amazon-web-services supervisord laravel

5
推荐指数
1
解决办法
2406
查看次数

Terraform - 条件数据源

在terraform中,有没有办法有条件地使用数据源?例如:

 data "aws_ami" "application" {
     most_recent = true
     filter {
         name = "tag:environment"
         values = ["${var.environment}"]
     }
     owners = ["self"]
}
Run Code Online (Sandbox Code Playgroud)

我希望能够通过命令行传递一个环境变量,并根据它,确定天气或不尝试获取此数据源.

我知道有资源可以使用该count属性,但似乎你不能将它用于数据源.

我会考虑将这个代码放在模块中,但模块也不能使用该count参数.

最后,另一种选择是为数据源提供"默认"值,如果它返回null,但我认为这也不可行.

还有其他可能的解决方案吗?

amazon-web-services terraform

5
推荐指数
1
解决办法
4394
查看次数

在 Kubernetes 上的 Jenkins 中安装卷

我正在尝试将 Jenkins 设置为在 Kubernetes 上的容器中运行,但我无法为 Jenkins 主目录保留卷。

这是我的 deployment.yml 文件。该图像基于jenkins/jenkins

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins-deployment
  labels:
    app: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: 1234567.dkr.ecr.us-east-1.amazonaws.com/mycompany/jenkins
        imagePullPolicy: "Always"
        ports:
        - containerPort: 8080
        volumeMounts:
          - name: jenkins-home
            mountPath: /var/jenkins_home
      volumes:
        - name: jenkins-home
          emptyDir: {}
Run Code Online (Sandbox Code Playgroud)

但是,如果我随后将一个新容器推送到我的图像存储库并使用以下命令更新 pod,Jenkins 会重新上线,但要求我从头开始(输入管理员密码,我的 Jenkins 工作都不在那里,没有插件等)

kubectl apply -f kubernetes (where my manifests are stored)

kubectl set image deployment/jenkins-deployment jenkins=1234567.dkr.ecr.us-east-1.amazonaws.com/mycompany/jenkins:$VERSION
Run Code Online (Sandbox Code Playgroud)

我是否误解了这个卷安装是如何工作的?


顺便说一句,我还有备份和恢复脚本,这些脚本将 Jenkins …

jenkins kubernetes

5
推荐指数
1
解决办法
7262
查看次数

PHP-FPM性能调整-流量激增

我有一个用Laravel / PHP编写的Web应用程序,该应用程序处于早期阶段,通常服务于大约500-600 reqs / min。我们使用Maria DB和Redis进行缓存,一切都在AWS上进行。

对于我们要在平台上推广的活动,我们向所有用户发送推送通知(移动平台),这导致大约2分钟的长时间流量爆发,使我们的速度达到3.5k reqs / min

在我们当前的服务器规模上,这完全使应用服务器的CPU陷入瘫痪,而这些服务器通常以10%左右的CPU运行。在此突发期间,数据库和Redis群集似乎正常。

查看日志,似乎所有PHP-FPM工作池进程都被占用,并开始从Nginx上游排队请求。

我们目前有:

  • 三台 m4.large服务器(2核,每个8GB RAM)

  • 动态PHP-FPM流程管理,每个框上最多包含120个子流程(服务器)

我的问题:

1)我们应该增加FPM池吗?似乎在内存方面,我们可能已接近极限

2)我们应该减少 FPM池吗?看来我们正在处理太多的进程,以至于CPU陷入瘫痪,无法真正完成其中的任何一个。我想知道我们是否因此能以更少的花费获得更好的结果。

3)我们是否应该简单地使用带有更多RAM和CPU的较大包装盒,这将允许我们添加更多FPM工作人员?

4)我们应该考虑进行FPM性能调整吗?我们使用Opcache,但是,我们是否应该切换到FPM的静态流程管理,以减少流程旋转的开销?

php performance laravel

5
推荐指数
1
解决办法
363
查看次数