-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
流量录制,请求后没有php-fpm worker子进程,lsof 没找到加载koala-record.so,session文件夹也没有写入文,koala的debug日志提示说recorded,怎么回事 #15
Comments
找问题找到这里了,我也有这个问题,看了一下dockerfile ,在docker上好像是可以生成的, RUN install_packages apt-utils git vim curl lsof procps ca-certificates sudo locales supervisor && \
chmod 444 /usr/local/var/koala/*so && \
addgroup nobody && \
sed -i -e 's/\s*Defaults\s*secure_path\s*=/# Defaults secure_path=/' /etc/sudoers && \
echo "nobody ALL=NOPASSWD: ALL" >> /etc/sudoers && \
sed -i \
-e "s/pm = ondemand/pm = static/g" \
-e "s/^listen = 9000/listen = \/usr\/local\/var\/run\/php-fpm.sock/g" \
-e "s/^;clear_env = no$/clear_env = no/" \
/opt/bitnami/php/etc/php-fpm.d/www.conf && \
sed -i \
-e "s/user=daemon/user=nobody/g" \
-e "s/^group=daemon/group=nobody/g" \
-e "s/listen.owner=daemon/listen.owner=nobody/g" \
-e "s/listen.group=daemon/listen.group=nobody/g" \
/opt/bitnami/php/etc/common.conf 是不是php-fpm 分配方式一定要是静态的呢?我的环境是动态的, 还有就是'listen.owner' 'listen.group' 为'nobody' , 这些都是与docker环境上有差的, nginx 上 我也是走sock的。
在系统上,我的是centos 7.3,docker上大概走的就是ubuntu, 按这个思路一个个排查,折腾一下。 |
还有个问题就是,在我的开发机上php-fpm是走服务自动启动的,看了一下
# or, Linux
$ LD_PRELOAD="/usr/local/var/koala/koala-libc.so /usr/lib64/libcurl.so.4" LC_CTYPE="C" KOALA_SO=/usr/local/var/koala/koala-recorder.so KOALA_RECORD_TO_DIR=/usr/local/var/koala /usr/local/sbin/php-fpm 他是在这启动的 然后我把这个写到 '/etc/profile' 中,好像是有点问题 我的配置是这样的
确认'KOALA_RECORD_TO_DIR'可以写
|
我这边能成功 log 与 session 产生文件了 , 解决问题主要就是重新编辑了一下 主要是不放到tmp/编译 step01koala-libc/build.sh step02koala/build-recorder.sh #!/usr/bin/env bash
set -e
set -x
# /mnt1t/__go__/src/github.com/didi/rdebug
RDEBUG=$(cd ../`dirname $0` && pwd -P)
# record to file, only for testing purpose
export GOPATH=/mnt1t/__go__
export CGO_CFLAGS="-DKOALA_LIBC_NETWORK_HOOK -DKOALA_LIBC_FILE_HOOK"
export CGO_CPPFLAGS="-DKOALA_LIBC_NETWORK_HOOK -DKOALA_LIBC_FILE_HOOK"
export CGO_CXXFLAGS="-std=c++11 -Wno-ignored-attributes"
exec go build -tags="koala_recorder" -buildmode=c-shared -o $RDEBUG/output/libs/koala-recorder.so github.com/didi/rdebug/koala/cmd/recorder step03koala/build-replayer.sh #!/usr/bin/env bash
set -e
set -x
# /mnt1t/__go__/src/github.com/didi/rdebug
RDEBUG=$(cd ../`dirname $0` && pwd -P)
# build replayer by default
export CGO_CFLAGS="-DKOALA_LIBC_NETWORK_HOOK -DKOALA_LIBC_FILE_HOOK -DKOALA_LIBC_TIME_HOOK -DKOALA_LIBC_PATH_HOOK"
export CGO_CPPFLAGS="-DKOALA_LIBC_NETWORK_HOOK -DKOALA_LIBC_FILE_HOOK -DKOALA_LIBC_TIME_HOOK -DKOALA_LIBC_PATH_HOOK"
export CGO_CXXFLAGS="-std=c++11 -Wno-ignored-attributes"
go build -tags="koala_replayer" -buildmode=c-shared -o $RDEBUG/output/libs/koala-replayer.so github.com/didi/rdebug/koala/cmd/replayer
cp $RDEBUG/output/libs/koala-replayer.so $RDEBUG/php/midi/res/replayer/koala-replayer.so 但问题是,开了这东西。我的硬盘感觉被占IO, chrome直接是打不开, 没有细测, 屏蔽/etc/profile 的设置了 |
”是不是php-fpm 分配方式一定要是静态的呢?我的环境是动态的, fpm 的进程管理模式,是静态还是动态,是没有影响的。 ”在我的开发机上php-fpm是走服务自动启动的“ 把环境变量 和 启动命令放到一起。而不是通过 /etc/profile 来控制。这样的好处是,可以通过环境变量来随意切换录制和非录制。可以写一个 shell 脚本来控制 fpm 的启停,在 shell 里设置环境变量,这样可以通过修改 shell 脚本来控制是否开启录制;其次在需要重启服务的时候,直接运行脚本即可。 最终是通过重新编译,才可以录制了?(注意,仓库中自带的 so 是 macOS 版本的,其他系统得重新编译。) |
supervisor.conf 里改成/opt/bitnami/php/var/run/php-fpm.pid |
@testerSunshine 遇到和你一模一样的问题 - - 请问有找到解决办法吗 |
1.看下 确保php-fpm的配置中close_env=no |
@727155455 针对1,2:都改过配置了,都排除了。 针对3:用的是docker build 出来的,ok吗? |
现支持 PHP,Java 还没人力跟进 |
No description provided.
The text was updated successfully, but these errors were encountered: