Tôi gặp sự cố khi một webkit_server với Capybara và capybara-webkit chạy không kết nối với màn hình Xvfb cục bộ bị treo khi truy cập URL. Dường như điều này xảy ra sau vài phút liên tục truy cập các URL khác nhau và thực hiện công cụ tìm kiếm. (Tôi đang sử dụng capybara cho một ứng dụng cạo màn hình trong vani Ruby, không phải để thử nghiệm.)webkit_server treo cứng định kỳ khi chạy từ Capybara trong Ruby
Tôi đã xác nhận rằng khi nó treo trang web vẫn có thể truy cập được (ví dụ, thông qua curl hoặc wget trên dòng lệnh) . Tôi cũng đã thử gói mã Ruby để gọi lượt truy cập và các công cụ tìm kiếm tiếp theo trong một khối Thời gian chờ để sau 60 giây chờ URL mới được truy cập, nhưng mọi lần truy cập() không thành công sau lần đầu tiên xảy ra. Cách duy nhất để khắc phục vấn đề là giết cả quá trình Ruby gọi Capybara/capybara-webkit và quá trình webkit_server và khởi động lại.
Khi tôi strace quá trình webkit_server, tôi thấy đầu ra như thế này lặp đi lặp lại:
clock_gettime(CLOCK_MONOTONIC, {5821, 680279627}) = 0
gettimeofday({1330890176, 712033}, {0, 33052112}) = 0
gettimeofday({1330890176, 712087}, {0, 140736435864256}) = 0
gettimeofday({1330890176, 712137}, {0, 33108640}) = 0
clock_gettime(CLOCK_MONOTONIC, {5821, 680486036}) = 0
clock_gettime(CLOCK_MONOTONIC, {5821, 680530091}) = 0
read(7, 0x1fac1b4, 4096) = -1 EAGAIN (Resource temporarily unavailable)
Và nếu tôi strace quá trình Ruby đó gọi nó, nó được treo trên một read():
Process 3331 attached - interrupt to quit
read(5,
^C <unfinished ...>
Process 3331 detached
Tôi biết rằng mã Ruby treo trên phương thức Capybara visit().
Bất kỳ ý tưởng nào về những gì tôi có thể làm để khắc phục sự cố hoặc sửa lỗi này đều được đánh giá cao. Tôi giả định rằng vấn đề có liên quan đến một số tài nguyên webkit_server cần truy cập vào URL nhưng tôi không chắc chắn nên làm gì tiếp theo.
Cảm ơn!
Ngoài ra, cho những gì nó có giá trị, tôi đã cố gắng sử dụng trình điều khiển webkit_debug Capybara và bật lên ghi riêng Capybara của. Các dòng cuối cùng từ đầu ra gỡ lỗi là: >> Truy cập >> 1 >> 109 >> http: // [URL của trang web] Tôi đã thử sử dụng xwd để chụp màn hình những gì đang diễn ra tại thời điểm này : xwd -root -display: 1 | xwdtopnm | pnmtopng> screenshot.png Nhưng tôi chỉ nhận được một hình chữ nhật màu đen. –