Trang chủ > Tùy bút tiểu thuyết > Nội dung chính

Những lỗi làm bạn mất ngủxem ngoại hạng anh, bạn có từng gặp chưa?


Tôi sẽ kể cho bạn một câu chuyện nhỏcá cược bóng đá, một trải nghiệm cá nhân khi làm việc tại một công ty nước ngoài.

Lúc đóxem ngoại hạng anh, tôi đang làm việc trong một nhóm chuyên phát triển phần mềm liên quan đến thư viện đa phương tiện trên điện thoại di động. Một ngày nọ, tôi bất ngờ nhận được một lỗi với mức độ nghiêm trọng cao nhất. Đây là một lỗi rất kỳ lạ, chỉ để tái hiện lại nó đã mất rất nhiều thời gian. Trong hệ thống theo dõi vấn đề nội bộ của công ty, các tester đã cung cấp chi tiết từng bước để tái hiện lỗi này. Ý chính là khi sử dụng một chiếc điện thoại từ một dòng sản phẩm cụ thể để phát video "The Matrix" (Ma Trận), khoảng 30 phút sau, ứng dụng sẽ bất ngờ sập. Điều khiến lỗi này trở nên phức tạp hơn không chỉ nằm ở sự khó tái hiện mà còn ở chỗ nó chỉ xảy ra với một số phiên bản cụ thể của phần mềm và phần cứng. Cả nhóm phải mất vài ngày để xác định xem liệu đây có phải do vấn đề về bộ nhớ hay không, hay là lỗi liên quan đến mã hóa video mà chúng tôi đang sử dụng. Mọi người đều cảm thấy áp lực vì nếu không giải quyết sớm, dự án sẽ bị trì hoãn. Tôi đã dành cả buổi tối để kiểm tra mã nguồn, cố gắng tìm kiếm bất kỳ đoạn code nào có thể gây ra vấn đề này. Cuối cùng, sau nhiều giờ vật lộn, tôi phát hiện ra rằng lỗi xuất phát từ cách xử lý bộ nhớ đệm video trong quá trình chạy. Điều này dẫn đến hiện tượng tràn bộ nhớ khi tải một lượng lớn dữ liệu liên tục. Tôi đã nhanh chóng sửa đổi đoạn code đó và tiến hành kiểm thử lại. Sau khi chạy thử nghiệm nhiều lần, tôi cuối cùng cũng có thể khẳng định rằng lỗi đã được khắc phục hoàn toàn. Kết thúc ngày hôm đó, tôi cảm thấy nhẹ nhõm hơn rất nhiều. Những thử thách như vậy thực sự giúp tôi trưởng thành hơn trong công việc và học hỏi được nhiều điều mới mẻ.

Bạn có thể tưởng tượngbầu cua, có quá nhiều nguyên nhân có thể dẫn đến vấn đề sụp đổ. Chẳng hạn như việc thực hiện một thuật toán cục bộ nào đó vượt quá giới hạn địa chỉ, hoặc thứ tự chạy của các luồng đa luồng bị rối loạn, thậm chí là tham số truyền vào bộ giải mã không chính xác, v.v. và còn nhiều trường hợp khác nữa. Vấn đề có thể phát sinh từ ứng dụng phía trên, hoặc từ thư viện ở giữa, thậm chí có thể do bộ mã hóa/giải mã gặp trục trặc, hoặc cả nền tảng kernel và phần cứng không ổn định (khi đó tôi đang làm việc cho một công ty sản xuất điện thoại di động, nơi chúng tôi tự thiết kế cả phần mềm lẫn phần cứng). Nói chung, bất kỳ điều gì bạn có thể nghĩ ra hay không ngờ tới đều có thể là nguyên nhân.

Trên thực tếbầu cua, việc phân tích vấn đề này cũng được tiến hành theo thứ tự từ trên xuống dưới. Đầu tiên, vì phát hiện ra lỗi khi phát lại, có vẻ như vấn đề nằm ở trình phát. OK, vấn đề sẽ được chuyển cho nhóm phát triển trình phát. Nhóm phát triển trình phát sau khi phân tích đã nhận ra rằng mã của họ không phải là nguyên nhân gây ra vấn đề. Tiếp theo, họ đính kèm kết quả phân tích vào lịch sử xử lý vấn đề và chuyển vấn đề sang đội ngũ tiếp theo để giải quyết. Nhưng đội nào nên nhận vấn đề này? Điều đó phụ thuộc vào kết quả phân tích của đội trước đó. Trong quá trình phân tích, họ sẽ theo dõi đến chỗ xảy ra lỗi cuối cùng nằm trong module mã nào mà họ đang sử dụng. Sau đó, sẽ có người chịu trách nhiệm tìm đội ngũ bảo trì module liên quan. Và như vậy, lỗi này từ tầng trên bắt đầu, qua nhiều bước chuyển giao, cuối cùng một ngày nọ rơi vào tay tôi.

Khi một đội nhận được một lỗi ở cấp độ cao nhất như vậycá cược bóng đá, điều đó có nghĩa là họ cần phải tạm dừng một số công việc hiện tại và lập tức phân bổ nhân lực để giải quyết nó. Điều này giống như nắm một quả khoai lang nóng trong tay, không ai muốn giữ nó trong nhóm của mình quá lâu. Tôi đã mất cả buổi sáng để phân tích, và cuối cùng tôi đã chứng minh rằng điểm sụp đổ không nằm trong khu vực mã nguồn mà chúng tôi chịu trách nhiệm bảo trì, mà lại nằm ở một mô-đun sâu hơn mà chúng tôi đang sử dụng. Được rồi, tôi nhập kết quả phân tích vào hệ thống, đính kèm nhật ký phân tích, sau đó soạn thảo một email tóm tắt. Công việc của tôi đã kết thúc trong sự hài lòng. Tuy nhiên, lỗi vẫn còn đó! Bug này thực sự là một thách thức lớn. Khi gửi email thông báo cho các đồng nghiệp, tôi cảm thấy như mình vừa hoàn thành một phần quan trọng của nhiệm vụ, nhưng vẫn còn nhiều việc phải làm. Tôi liên hệ ngay với đội ngũ phát triển của bên thứ ba chịu trách nhiệm về mô-đun đó, gửi cho họ tất cả dữ liệu phân tích mà tôi đã thu thập. Hy vọng họ sẽ nhanh chóng xác định vấn đề và đưa ra giải pháp. Đêm hôm đó, khi đang kiểm tra lại email, tôi nhận được phản hồi từ nhóm bên kia. Họ cảm ơn tôi vì những thông tin chi tiết mà tôi cung cấp và cho biết họ sẽ tiến hành kiểm tra ngay lập tức. Điều đó khiến tôi cảm thấy yên tâm hơn, nhưng cũng tự nhủ rằng công việc của mình chưa thực sự kết thúc. Một khi lỗi vẫn chưa được sửa chữa, thì mọi người trong dự án đều đang đứng trước nguy cơ gặp rắc rối. Sáng hôm sau, tôi tiếp tục theo dõi tình hình, chờ đợi phản hồi từ phía nhà phát triển. Đợi đến trưa, tôi nhận được tin tốt lành: họ đã xác định được nguyên nhân và đang tiến hành khắc phục. Khi nhìn thấy dòng email đó, tôi cảm thấy nhẹ nhõm và tự hào vì đã đóng góp một phần nhỏ vào việc giải quyết vấn đề này. Nhưng tôi cũng hiểu rằng, trong thế giới phần mềm, không bao giờ có gì là chắc chắn hoàn toàn, và việc kiểm tra kỹ lưỡng luôn là điều cần thiết.

Có người sẽ thắc mắcbầu cua, bug đó rồi ra sao? Nó cứ lẩn quẩn trong hệ thống theo dõi vấn đề (issue tracking system) suốt vài tháng trời. Cuối cùng, do dòng sản phẩm liên quan bị hủy bỏ (có nghĩa là dự án sản phẩm đó bị khai tử), tất nhiên những lỗi liên quan cũng không còn ý nghĩa nữa. Rồi bug đó cứ thế mà biến mất trong quên lãng...


Công ty nước ngoài mà tôi đang đề cập đến trước đây nổi tiếng nhờ quy trình làm việc hoàn thiện và hệ thống quản lý chất lượng. Dù là phát triển tính năng mới hay sửa lỗi phần mềm (debug)cá cược bóng đá, tất cả đều phụ thuộc vào quy trình để thúc đẩy tiến độ. Với số lượng nhân viên đông đảo và sự phân bố trên phạm vi toàn cầu, việc duy trì một hệ thống quản lý nội bộ như vậy là điều tất yếu. Giả sử lỗi đó, nếu cuối cùng không bị hủy bỏ, liệu nó có được giải quyết thông qua sự thúc đẩy của quy trình hay không? Theo tôi, chắc chắn rồi. Chỉ cần thời gian đủ dài, nó sẽ nhất định được chuyển cho người thực sự có khả năng khắc phục nó. Tuy nhiên, vấn đề ở đây là hiệu suất vận hành tổng thể quá thấp kém. Những con người tài năng trong công ty đôi khi phải mất nhiều thời gian hơn dự kiến để tiếp cận các vấn đề quan trọng, khiến tiến độ bị trì hoãn đáng kể.

Khác với các công ty CNTT truyền thốngbầu cua, các công ty internet thường được xem là có hiệu suất hoạt động cao hơn. Tuy nhiên, có những lỗi kỹ thuật thực sự khó giải quyết hơn vì môi trường vận hành của sản phẩm internet luôn phức tạp và thay đổi không ngừng. Khi gặp phải những vấn đề nan giải, chẳng hạn như các lỗi mà một số người dùng báo cáo nhưng đội ngũ của chúng tôi lại không thể tái hiện được, đôi khi tình huống này xảy ra: các thành viên thuộc nhóm backend kiểm tra kỹ lưỡng và khẳng định rằng không có bất kỳ vấn đề gì ở phía server; sau đó, các đồng nghiệp từ nhóm client hoặc frontend cũng kết luận rằng mọi thứ đều ổn. Cuối cùng, tất cả mọi người cũng không thể cứ mãi dính vào một vấn đề duy nhất này mãi được, bởi còn hàng tá yêu cầu phát triển khác đang chờ xử lý. Do đó, vấn đề ấy cũng dần bị lãng quên. Có những "vấn đề dai dẳng" như thế, kéo dài qua tháng này sang tháng khác, thậm chí là một năm, vẫn chưa được giải quyết.

Rõ ràng đây không phải là kết quả mà chúng ta mong đợi. Vậy vấn đề thực sự nằm ở đâu?

Đầu tiênxem ngoại hạng anh, không ai có thể nắm rõ toàn bộ bức tranh. Giống như ví dụ tôi đã đề cập về một công ty đa quốc gia mà tôi từng làm việc, mỗi đội nhóm chỉ hiểu rõ phần việc riêng của mình, và không ai biết vấn đề thực sự nằm ở đâu. Trong trường hợp lý tưởng nhất, công ty sẽ có những chuyên gia kỹ thuật kỳ cựu, những người đã tham gia từ những ngày đầu thành lập công ty và cùng phát triển với nó. Họ vừa hiểu rõ về mặt kinh doanh, vừa am hiểu sâu sắc về công nghệ, có khả năng phân tích từ cấp cao nhất xuống tận các chi tiết cơ bản, và cuối cùng giải quyết vấn đề hoặc ít nhất là phân tích đến mức đủ chi tiết để chuyển giao cho người có khả năng xử lý vấn đề đó. Tuy nhiên, trong thực tế, điều này thường không xảy ra. Ngay cả khi công ty có một số nhân viên kỳ cựu, họ thường rời xa công nghệ quá sớm. Họ luôn bận rộn với hàng loạt cuộc họp (dù sao thì việc họp cũng không phải là điều xấu). Vậy nếu chúng ta không có người nào hiểu toàn diện tình hình như vậy thì sao? Điều đó đòi hỏi một người có trách nhiệm tuyệt đối, có khả năng kết nối tất cả các bên liên quan để cùng nhau giải quyết vấn đề. Thực tế, vai trò của những người như vậy trở nên vô cùng quan trọng trong các tổ chức lớn. Họ không chỉ là cầu nối giữa các phòng ban mà còn là điểm tựa giúp mọi người tập trung vào mục tiêu chung. Một khi họ xuất hiện, không chỉ vấn đề được giải quyết nhanh hơn mà còn tạo ra một môi trường làm việc hiệu quả hơn, nơi mọi người đều cảm thấy được hỗ trợ và tin tưởng lẫn nhau. Đây chính là yếu tố then chốt để giữ cho công ty luôn vận hành suôn sẻ ngay cả khi gặp khó khăn lớn.

Thứ haixem ngoại hạng anh, việc thiếu các phương tiện và công cụ phân tích vấn đề là một trở ngại lớn. Đối với những vấn đề có thể tái hiện lại, chúng thường khá dễ giải quyết; kỹ sư thông qua việc kiểm tra và lần theo từng bước, cuối cùng cũng sẽ tìm ra nguyên nhân. Tuy nhiên, đối với những vấn đề khó tái hiện, điều này thường khiến người ta cảm thấy bế tắc, vì chúng ta không biết chính xác tình hình thực tế khi vấn đề xảy ra, tức là không thể "bắt giữ" được "hiện trường" của sự cố. Trong những tình huống như vậy, việc thiếu dữ liệu hoặc thông tin chi tiết có thể làm chậm tiến độ rất nhiều. Điều này nhấn mạnh tầm quan trọng của việc xây dựng các công cụ hỗ trợ mạnh mẽ hơn, chẳng hạn như hệ thống ghi log tự động hoặc cơ chế phát hiện sự cố ngay lập tức. Những công nghệ này có thể giúp giảm thiểu thời gian tìm kiếm và cải thiện hiệu quả xử lý các vấn đề phức tạp trong tương lai.

tương tự chết giả

Ngoài racá cược bóng đá, đối với những tình huống thường gặp trên các sản phẩm internet khi người dùng gặp vấn đề nhưng chúng ta không thể tái hiện lại, nguyên nhân khiến các bạn kỹ thuật cảm thấy việc giải quyết trở nên khó khăn cũng thường đến từ việc "dữ liệu" mà họ có để phân tích là không đủ. Điều này không chỉ gây khó khăn trong việc xác định gốc rễ vấn đề mà còn làm cho quá trình khắc phục sự cố mất nhiều thời gian hơn so với dự kiến ban đầu.

Thứ ba và quan trọng nhấtbầu cua, điều chúng ta cần là tinh thần kiên trì không bỏ cuộc.Những con bug giống như con mồi khéo léobầu cua, nó sẽ kích thích sự hứng thú của những kẻ săn mồi xuất sắc.Một người thợ săn bình thường có thể nhanh chóng từ bỏ khi đối mặt với con mồi khó lùngxem ngoại hạng anh, nhưng một thợ săn xuất sắc sẽ kiên trì theo đuổi cho đến khi thành công. Còn khi nói về những lỗi kỹ thuật cứng đầu, cách giải quyết thực sự duy nhất chính là bạn phải kiên trì hơn cả chúng. Bạn cần sẵn sàng dành thời gian và nỗ lực nhiều hơn để theo đuổi từng manh mối, không ngại thử nghiệm mọi phương án, dù đó có thể là một hành trình dài và đầy thách thức. Chỉ khi đó, bạn mới có thể chiến thắng và khắc phục được vấn đề triệt để.

tiêu diệt quái vật Chinh phục công nghệ: Từ không đến chuyên gia Trong bài viết trướcxem ngoại hạng anh, cũng đã đề cập rằng việc nghiên cứu một vấn đề cụ thể có thể dẫn đến sự thay đổi toàn diện trong cấu trúc. Khi cấu trúc cũ không thể được sửa chữa để giải quyết vấn đề, nó sẽ dần lột xác và tái sinh mạnh mẽ hơn. Tất cả những yếu tố này thúc đẩy hệ thống tiến hóa sang một cấp độ cao hơn, mang lại sự đổi mới và cải thiện toàn diện. Hơn nữa, quá trình này không chỉ đơn thuần là thay thế các phần riêng lẻ mà còn đòi hỏi một sự chuyển đổi sâu sắc về cách tiếp cận và tư duy. Sự biến đổi này không chỉ giúp giải quyết vấn đề hiện tại mà còn tạo nền tảng cho sự phát triển bền vững trong tương lai. Chính áp lực từ bên ngoài và nhu cầu từ bên trong đã khiến hệ thống không ngừng thích nghi và hoàn thiện bản thân.


Trong thực tếxem ngoại hạng anh, chúng ta thường gặp những vấn đề khó khăn như thế nào? Ít nhất có ba loại vấn đề chính:

  • Không chắc chắn khi nào sẽ xuất hiện;
  • Liên quan đến hiệu suất (tìm điểm nghẽn hiệu suất);
  • Chỉ xuất hiện trong một số môi trường cụ thể.

Về ví dụ CPU đạt mức hoạt động tối đa mà tôi đã đề cập trước đócá cược bóng đá, nó thuộc loại vấn đề đầu tiên. Đối với những tình huống như vậy, bên cạnh việc nghiên cứu kỹ lưỡng mã nguồn, chúng ta cũng cần chuẩn bị thật chu đáo trước khi vấn đề xuất hiện. Điều này có nghĩa là thu thập và ghi lại càng nhiều thông tin nhật ký (log) càng tốt. Chỉ khi đó, chúng ta mới có thể "bắt" được vấn đề ngay khi nó thực sự xảy ra.

Những vấn đề liên quan đến hiệu năng thường gây khó khăn bởi vì khi chúng xuất hiệnbầu cua, các yếu tố ảnh hưởng lẫn nhau, khiến chúng ta không thể phân biệt được đâu là nguyên nhân, đâu là kết quả. Đôi khi, chúng ta cần thực hiện các quá trình Profiling phức tạp để tìm ra gốc rễ của vấn đề. Đối với các vấn đề trên client, có rất nhiều công cụ Profiling đã được phát triển hoàn chỉnh, nhưng đối với server thì lại phức tạp hơn một chút. Bỗng nhiên tôi nhớ đến bạn Hồ đã dịch một bài viết thú vị có tên Nhận diện vấn đề hiệu năng trên trang Giây Phút Nháy Mắt. Bài viết này rất hay và đáng để đọc. Nó làm nổi bật mối liên hệ giữa thời gian phản hồi và khả năng xử lý đồng thời, cũng như khái niệm điểm uốn hiệu năng, khiến người đọc ấn tượng sâu sắc và mang lại nhiều hướng dẫn hữu ích. Đường link đầy đủ của bài viết có thể xem tại đây: [địa chỉ].

https://mp.weixin.qq.com/s/-M2EfUc_XLKnU049T49ZWA

Hay là cậu chịu trách nhiệm restart các máy chủ định kỳ trước khi chúng bị OOM (OutOfMemoryError)xem ngoại hạng anh, thay vì để chúng tự sập? Ít nhất như vậy hệ thống vẫn có thể chạy được một phần nào đó.

chỉ xuất hiện trong các môi trường cụ thể

Có một lầnxem ngoại hạng anh, một số người dùng báo cáo rằng trò chơi trong ứng dụng của chúng tôi không thể mở được. Nguyên nhân là việc tải tài nguyên luôn thất bại, nhưng điều kỳ lạ là vấn đề chỉ xảy ra khi thiết bị của họ kết nối qua Wi-Fi; còn khi sử dụng 3G, mọi thứ hoạt động bình thường. Tất nhiên, chúng tôi không thể tái hiện lỗi này cho đến khi nhận được một số tệp đã tải xuống từ điện thoại của người dùng. Sau khi phân tích, chúng tôi phát hiện ra rằng trong tài nguyên trò chơi của mình có chứa một tệp cấu hình XML, và tệp này bị chèn thêm mã Do đó, chương trình tải xuống của chúng tôi không thể kiểm tra và xác thực tệp này thành công. Vậy ai là người đã chèn mã JavaScript vào đây? Câu trả lời là nhà cung cấp dịch vụ mạng. Tại sao họ lại làm vậy? Rõ ràng là để hiển thị quảng cáo... Vâng, đó chính là một trường hợp điển hình của việc bị nhà mạng "cướp lưu lượng"! Chương trình của nhà mạng đã nhầm lẫn tệp XML này với mộ

Không giữ hoạt động

Có lẽ mọi người đã nhận ra rằngbầu cua, để giải quyết các vấn đề cụ thể xảy ra ở phía người dùng, điều quan trọng là phải thu thập được nhật ký hoạt động tại chỗ của họ. Ví dụ như Mars Xlog mà WeChat đã mở nguồn, chính là công cụ phục vụ mục đích này, và nó thực sự rất hữu ích. Theo những gì tôi nghe nói, tác giả sẽ sớm tung ra một số tính năng mới trong thời gian tới. Nếu bạn đang sử dụng phiên bản iOS của WeChat, chỉ cần nhập ":up" khi thêm bạn bè, bạn sẽ thấy giao diện báo cáo nhật ký của WeChat (tuy nhiên, với phiên bản Android của WeChat, tôi không biết làm thế nào để hiển thị phần này, nếu bạn biết cách, vui lòng chia sẻ dưới phần bình luận). Những nhật ký được báo cáo ở đây, theo lời đồn, chính là thông qua Xlog được in ra.

chỉ xuất hiện trong một số điều kiện cụ thể Nói bằng sự thậtxem ngoại hạng anh, chứ không phải dựa trên phán đoán chủ quan, nên là nguyên tắc cơ bản cho người kỹ thuật hành động.Nếu bắt buộc phải vi phạm nguyên tắc này để đưa ra kết luậnbầu cua, thì chúng ta không đưa ra kết luận đó.


Mọi thứ luôn không hoàn hảobầu cua, và thế giới này cũng không có trạng thái hoàn hảo. Chương trình trong quá trình vận hành cũng sẽ luôn xảy ra lỗi.

Ngay cả khi vấn đề chỉ xuất hiện một lầnxem ngoại hạng anh, nó vẫn là một vấn đề. Lõi của kỹ thuật là một nghệ thuật để cố gắng làm cho mô hình logic hoàn hảo có thể chạy trơn tru trong một thế giới không hoàn hảo.

Miễn là chúng ta tiếp tục nỗ lựcbầu cua, chắc chắn chúng ta sẽ làm tốt hơn so với quá khứ.

(Kết thúc)

Các bài viết được chọn lọc khác


Bài viết gốcbầu cua, xin vui lòng trích dẫn nguồn và bao gồm mã QR bên dưới! Nếu không, từ chối tái bản!
Liên kết bài viết: /7cfaggnx.html
Hãy theo dõi tài khoản Weibo cá nhân của tôi: Tìm kiếm tên tôi "Trương Thiết Lệ" trên Weibo.
Tài khoản WeChat của tôi: tielei-blog (Trương Thiết Lệ)
Bài trước: Bảo vệ sự tôn nghiêm của công nghệ
Bài sau: Cuộc phiêu lưu của ba byte

Bài viết mới nhất