小编Att*_*emi的帖子

Docker Networking - nginx:[emerg]主机在上游找不到

我最近开始迁移到Docker 1.9和Docker-Compose 1.5的网络功能,以替换使用链接.

到目前为止链接没有问题nginx通过docker-compose连接到位于一组不同服务器中的php5-fpm fastcgi服务器.最近,当我运行docker-compose --x-networking up我的php-fpm时,mongo和nginx容器启动,但nginx立即退出[emerg] 1#1: host not found in upstream "waapi_php_1" in /etc/nginx/conf.d/default.conf:16

但是,如果我在php和mongo容器运行时再次运行docker-compose命令(nginx退出),nginx启动并从那时起正常工作.

这是我的docker-compose.yml档案:

nginx:
  image: nginx
  ports:
    - "42080:80"
  volumes:
    - ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

php:
  build: config/docker/php
  ports:
    - "42022:22"
  volumes:
    - .:/var/www/html
  env_file: config/docker/php/.env.development

mongo:
  image: mongo
  ports:
    - "42017:27017"
  volumes:
    - /var/mongodata/wa-api:/data/db
  command: --smallfiles
Run Code Online (Sandbox Code Playgroud)

这是我default.conf的nginx:

server {
    listen  80;

    root /var/www/test;

    error_log /dev/stdout debug;
    access_log /dev/stdout;

    location / {
        # try to serve file directly, fallback to app.php …
Run Code Online (Sandbox Code Playgroud)

nginx docker docker-compose docker-networking

74
推荐指数
7
解决办法
9万
查看次数

将带有SCP的大文件发送到某个服务器的速度正好是2112 kB

有一个ubuntu 10.04服务器,如果我从这个服务器所在办公室以外的任何服务器ssh一个文件(意味着任何使用scp-ing到这个服务器通过局域网从这个服务器总是工作由于某种原因)然后,对于任何大小超过2112 kB的文件,scp-ing都会失败,并且卡在2112 kB.所以

scp -vvv /home/attila-szeremi/aszeremi.tar.gz  attila@server.hu:~/aszeremi.tar.gz
Run Code Online (Sandbox Code Playgroud)

1% 2112KB 909.2KB/s - stalled -在最后动态显示类似的东西,其中KB/s变得越来越低.

有谁知道可能导致这种情况的原因以及如何解决这个问题?

到目前为止我尝试了什么:

  • 使用scp -l 2000来限制速度.它只是使文件发送速度变慢,并且在2112 kB时再次卡住了.
  • 能够与-C相容.它仍然以同样的大小停滞不前.

ssh ubuntu scp

43
推荐指数
3
解决办法
4万
查看次数

窗户上的纱线慢了5倍

当我添加一个新的包到现有的安装yarn install已经运行时,它仅需5分钟,添加一个新的依赖,这是因为如果我只是做慢yarn installnode_modules那里.

这是正常的吗?

我在Windows 10 x64上使用Yarn 0.17.9.我确实让Windows Defender忽略了我的项目目录和yarn全局缓存目录.

编辑:这是我做的一些基准测试结果.基于它们,似乎纱线添加实际上要快30-40%,真正的问题只是纱线在Windows上慢了500%

编辑2:我已确认尚未为项目和纱线缓存目录启用索引.但现在我已将纱线从0.16.1升级到0.17.9,并且Windows的速度提高了35-50%!但它仍然比Linux慢350-400%.我更新了基准测试.

对于Windows性能问题似乎存在Github问题:https://github.com/yarnpkg/yarn/issues/990

基准:

-

Windows - 纱线安装(缓存):

Done in 172.29s.
Run Code Online (Sandbox Code Playgroud)

Ubuntu - 纱线安装(缓存):

yarn install  48,75s user 11,32s system 117% cpu 51,161 total
Run Code Online (Sandbox Code Playgroud)

-

Windows - 纱线添加lodash:

Done in 143.11s.
Run Code Online (Sandbox Code Playgroud)

Ubuntu - 纱线添加lodash:

yarn add lodash  33,42s user 5,72s system 108% cpu 36,203 total
Run Code Online (Sandbox Code Playgroud)

-

仅供参考,Ubuntu基准测试在NTFS驱动器上的同一文件夹上运行.

用于基准测试的项目:https://github.com/amcsi/szeremi

javascript windows yarnpkg

35
推荐指数
2
解决办法
3824
查看次数

使用PhpStorm在Docker容器中运行PHPUnit

我想配置我的PhpStorm IDE以在我的Docker容器中运行PHPUnit测试.

似乎我只能使用本地PHP可执行文件,或者通过SSH作为测试的解释器.

我可以在我的PHP容器上安装SSH服务,但它似乎是一个hacky解决方案,并且在线文章不鼓励在容器上安装SSH服务.

为了尝试让本地解释器工作,我尝试创建一个bash脚本来代理容器内对PHP的调用,如下所示:

#!/usr/bin/env bash

# Run PHP through Docker
docker exec -t mycontainer_php_1 php "$@"
Run Code Online (Sandbox Code Playgroud)

当我自己运行它时,这非常有效,但当我将PhpStorm指向它作为本地PHP解释器时,它不会将其识别为有效的PHP可执行文件.

那么什么是让这个工作的好方法?

php phpunit phpstorm docker

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

Facebook图形在PHP中极其缓慢

无论是使用Facebook PHP SDK,还是仅使用curl加载数据$contents = file_get_contents("https://graph.facebook.com/$id?access_token=$accessToken"),响应都需要大约一秒钟.

当我需要检查一堆id的数据时,这非常慢.

在浏览器中,如果我输入一个facebook图形网址,我几乎可以立即得到结果,在PHP的十分之一时间内.

是什么导致了这个问题,我怎样才能像在任何浏览器中那样快速地制作它?我知道浏览器可以做到这一点.必须有一种方法可以在PHP中快速实现它.

IDEA:也许我需要在cURL中配置一些东西?

我尝试过的:

  • 使用PHP SDK.这很慢.我之所以尝试使用的原因file_get_contents()是因为我希望PHP SDK没有正确配置.
  • setopt($ch, CURLOPT_SSL_VERIFYPEER, false);.它没有任何区别.在回答编辑之后:实际上,这与重复使用卷曲手柄一起使后续请求非常快.

编辑:这是我用来衡量执行请求所需时间的代码的粘贴框:http://pastebin.com/bEbuqq5g.我将过去常说微秒的文本更正为秒.这就产生了类似于我在这个问题的评论中所写的结果:Facebook图形在PHP中非常慢.另请注意,即使访问令牌已过期,它们也会采用类似的慢速时间,就像在我的pastebin示例中一样.

编辑2:ssl应该有部分问题.我尝试了http://graph.facebook.com/4(没有httpS)的基准测试,它导致三个请求的1.2秒,而相同,但https花了2.2秒.这绝不是一个解决方案,因为对于任何需要访问令牌的请求,我必须使用https.

php curl facebook-graph-api

9
推荐指数
2
解决办法
3694
查看次数

Apache - 资源随机挂起(导致页面加载缓慢)

资源的HTTP请求是随机的 - 大约1-5%的时间(每个资源,而不是每页加载) - 需要花费很长时间才能传送到浏览器(约20秒),甚至不会无限期地挂起.(服务器详细信息列在底部的列表中).

由于JavaScript资源挂在<head>标记内,因此导致任何页面的每5个请求似乎挂起.

资源是css,js和小图像文件,由apache直接提供(没有脚本语言),尽管页面加载(涉及PHP或Rails)也很少挂起,与其他任何资源的机会相同(1-5%的时间) ,所以这似乎是一个与Apache Request相关的问题.

附加信息:

  • server-status按照预期检查了闲置的工人,我仍有98%的闲置工人.虽然这可能是相关的,因为挂钩适用于FastCGI不提供的静态资源(资源是静态的).
  • 我不是唯一有这个问题的人.其他人也有同样的问题,并来自不同的IP地址.
  • 这在Google Chrome和Firefox中都会作为HTTP客户端发生.
  • 我已经尝试在新选项卡中不断强制刷新相同的JS文件.它最终导致了同样的悬挂.
  • 谷歌浏览器的"计时"选项卡报告等待34毫秒,其中一个挂起请求报告19.27秒.这是否意味着Apache已经准备好了文件内容,只是在合理的时间内无法提供它?
  • error.log不显示任何错误.error.log中有一些预期的404和500错误,但这些错误与挂起无关; 那些是不存在的页面和PHP致命错误的实际错误.
  • 我得到一些可疑的206部分内容响应主要是针对静态内容,尽管挂起的次数比那些部分内容更频繁.我大多数时候到处获得200 OK响应,我可以确认无限期挂起apache access.log中报告为200 OK的资源.
  • 我确实为Redmine安装了mod_passenger.我不知道这是否有帮助,但可疑的是这台服务器安装它不像我使用的所有其他服务器.虽然mod_passenger不应该影响静态内容,特别是不在非ruby项目文件夹中,不应该吗?
  • 服务器在Ubuntu 13.10上使用Apache 2.4 Event MPM,托管在Digital Ocean上.

什么可能导致这些挂起,我怎么能解决这个问题?

apache ubuntu digital-ocean

9
推荐指数
1
解决办法
2598
查看次数

npm install在Docker Hub上安装期间显示颜色

我正在尝试npm install在Dockerfile中执行,但即使在假定禁用颜色时,颜色代码似乎仍然出现在Dockerhub构建日志中.

我可能做错了什么?

您可以在Docker Hub上找到包含构建详细信息的Dockerfile:https://hub.docker.com/r/amcsi/szeremi/builds/btk4utf3whezxqhnbzpkhyw/

Dockerfile:

FROM node
MAINTAINER  Attila Szeremi <attila+webdev@szeremi.com>
RUN mkdir /src
WORKDIR /src
RUN cd /src
# Copy just the package.json file file as a cache step.
COPY package.json /src/package.json
# Disable progress so npm would install faster.
# Disable colors, because Dockerhub can't display them.
# Install NPM packages excluding the dev dependencies.
RUN npm set progress=false && npm set color=false && npm install --production

COPY . .
RUN npm run …
Run Code Online (Sandbox Code Playgroud)

npm docker

7
推荐指数
1
解决办法
879
查看次数

如何在测试中的 API 调用之间重置 Laravel AuthManager/guards?

我正在为 API 编写功能测试,并且想测试自定义身份验证逻辑。

我知道当我调用登录 API 端点时,Laravel 会缓存用户已登录的事实,因此测试中的下一个 API 调用会认为用户已经通过身份验证...

因此,对于一个测试,如何禁用 Laravel 身份验证缓存魔法,以便我可以手动提供 Bearer 身份验证令牌来检查我的自定义身份验证逻辑是否有效?

我正在考虑清除 AuthManager 中的防护措施,或者完全清除 AuthManager,这样 Laravel 将被迫重新初始化它。但我没有运气弄清楚如何以有效的方式做到这一点。

这是一些伪示例代码:

public function testLogin()
{
    $responseData = $this->post('/login', ['email' => $this->user->email, 'password' => 'password'])->json();

    $this->get('/endpoint-requiring-auth')->assertOk();

    //
    // $this->logicToResetAuth() ?
    //

    $this->get('/endpoint-requiring-auth')->assertUnauthorized();
    
    // I want to manually have to pass the token to get it to work now.
    $this->get('/endpoint-requiring-auth', ['Authorization' => "Bearer $responseData[access_token]"])
        ->assertOk();
}
Run Code Online (Sandbox Code Playgroud)

此外,未知的重置逻辑应该会影响多个防护装置。

哦,是的,我正在围绕 JWT-Auth 库编写自定义逻辑。

php testing jwt laravel

6
推荐指数
2
解决办法
885
查看次数

获取哪些用户共享帖子

使用图形api,当我查询用户或页面的订阅源时,有一些帖子已经被用户共享,我可以看到有关一个实体的数据部分中的共享数量的数据:

  "shares": {
    "count": 2
  }, 
Run Code Online (Sandbox Code Playgroud)

当浏览Facebook时,在该帖子上,当我点击代表"显示共享"的图标时,会弹出一些内容,让我看到一些共享帖子的用户,根据评论"您只能看到公开或来自的共享朋友".那么有没有办法通过图形api从共享中获取用户数据?

share feed facebook-graph-api

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

如何使用 Rayon 将大范围分割成范围块,并让每个线程在块内查找?

我正在制作一个通过并行化暴力破解密码的程序。目前,要破解的密码已经以纯文本形式提供,我只是试图暴力破解它。

我有一个名为的函数generate_char_array(),它基于整数种子,转换基数并返回一个u8字符切片以尝试和检查。首先遍历字母表查找 1 个字符串,然后查找 2 个字符串,依此类推。

let found_string_index = (0..1e12 as u64).into_par_iter().find_any(|i| {
    let mut array = [0u8; 20];
    let bytes = generate_char_array(*i, &mut array);
    return &password_bytes == &bytes;
});
Run Code Online (Sandbox Code Playgroud)

使用找到的字符串索引(或更确切地说种子整数),我可以生成找到的字符串。

问题是 Rayon 对我来说并行化的方式是将任意大整数范围分割成thread_count-large 切片(例如,对于 4 个线程,0..2.5e11、2.5e11..5e11 等)。这不好,因为范围的末尾是任意超大密码长度(10+,我不知道),而大多数密码(包括我倾向于尝试的固定“zzzzz”)都短得多,因此我得到的是第一个线程完成所有工作,其余线程只是浪费时间测试太长的密码和同步;结果实际上比单线程性能慢。

我怎样才能将任意大范围(实际上不必有结束)分割范围块,并让每个线程在块中找到?这将使不同线程中的工作人员真正有用。

multithreading rust rayon

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