小编hen*_*rkh的帖子

在集成测试中并行PHPUnit测试

随着运行完成PHPUnit套件所需的时间增加,我们的团队开始怀疑是否有可能并行运行单元测试.最近我读了一篇关于Paraunit的文章,Sebastian Bergman也写道,他将在PHPUnit 3.7中添加并行性.

但是,集成测试仍然存在问题,或者更常见的是与DB交互的测试.为了保持一致性,必须重置testDB并在每次测试后加载夹具.但是在并行测试中,竞争条件存在问题,因为所有进程都使用相同的DB.

因此,为了能够并行运行集成测试,我们必须为每个进程分配自己的数据库.我想问一下,如果有人对如何解决这个问题有一些想法.也许在另一个xUnit实现中已经实现了这个问题的解决方案.

在我的团队中,我们使用的是MongoDB,因此一个解决方案是以编程方式为每个PHPUnit进程创建一个配置文件,并生成数据库名称(对于此过程),在setUp()方法中我们可以将主TestDb克隆到此临时数据库中.但在我们开始实施这种方法之前,我想问一下你对这个主题的看法.

php phpunit integration-testing unit-testing parallel-testing

14
推荐指数
1
解决办法
4844
查看次数

解释nginx中的limit_conn_zone $server_name

我正在配置 nginx 进行基本的 DDoS 防护。我想使用http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html中所述的 limit_conn 模块。我特别不明白这个例子:

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    limit_conn perip 10;
    limit_conn perserver 100;
}
Run Code Online (Sandbox Code Playgroud)

描述是:

例如,以下配置将限制每个客户端IP与服务器的连接数,同时限制与虚拟主机的总连接数

第一部分很清楚,我允许来自一个 IP 的同时连接不超过 10 个。

但第二条规则是否意味着我只允许 100 个连接到我的服务器?因为如果是这样,攻击者只需打开约 100 个连接,就会阻止每个人访问服务器,从而有效地使 DDoS 攻击成功。

ddos nginx

8
推荐指数
1
解决办法
9767
查看次数

php-fpm如何使用动态流程管理器管理工作人员?

我想澄清php-fpm如何使用动态流程管理器管理工作人员.

我们假设我们有以下配置:

pm = dynamic
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
Run Code Online (Sandbox Code Playgroud)
  1. 当php-fpm启动时,它会产生30个进程
  2. 没有联系.根据min_spare_servers设置,php-fpm会关闭10名工作人员吗?如果是,在什么时候会发生?
  3. 有4个与nginx的连接.php-fpm会与单独的worker一起服务每个连接,并立即产生额外的worker来满足剩余的连接吗?
  4. 有8个连接到nginx.php-fpm在推出60名工作人员之后会如何表现?和(3)中的相同?
  5. 有120个与nginx的连接.将100名工人分配到100个连接后会发生什么?php-fpm是否使用某些队列进行连接?它会限制nginx吗?php-fpm会开始删除与" 服务器达到pm.max_children设置 " 消息的连接吗?
    1. 有0个与nginx的连接.nginx会从100回到60个连接吗?还是50?它会立即杀死40名工人还是会等待一段时间?

如你所见,这是关于php-fpm如何管理进程的一个普遍问题.更具体地说,我想了解php-fpm中pm.max_childrenpm.max_spare_servers之间的区别.

php multithreading high-load nginx

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