2012-03-01 3 views
8

Khi sử dụng SDL Tridion 2011 SP1, đôi khi chúng tôi gặp lỗi GUI khi chúng tôi thực hiện tác vụ trên nhiều mục (ví dụ: xuất bản 1000 thành phần từ một thư mục cùng một lúc). Xuất bản khoảng 100 mục từ cùng một danh sách hoạt động hoàn hảo.SDL Tridion lần khi xuất bản nhiều mục

Các lỗi chúng ta thấy là trong CME/GUI là như sau:

The transaction associated with the current connection has completed 
but has not been disposed. The transaction must be disposed before the 
connection can be used to execute SQL statements. 

Có một lỗi bổ sung trong Windows Event Viewer trong Tridion Lỗi log như sau:

The socket connection was aborted. This could be caused by an error processing 
    your message or a receive timeout being exceeded by the remote host, or an 
    underlying network resource issue. Local socket timeout was 
    '10675199.02:48:05.4775807'. 
The read operation failed, see inner exception. 
The socket connection was aborted. This could be caused by an error processing 
    your message or a receive timeout being exceeded by the remote host, or an 
    underlying network resource issue. Local socket timeout was 
    '10675199.02:48:05.4775807'. 
An existing connection was forcibly closed by the remote host 

Giá trị thời gian chờ nào đang được sử dụng ở đây và làm cách nào để chúng tôi có thể tăng các giá trị thời gian chờ này?

Trả lời

12

Trong% windir% \ Microsoft.N ET \ Framework64 \ v4.0.30319 \ Config \ Machine.config và% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ Machine.config

  • Thay đổi allowExeDefinition từ “MachineOnly” thành “MachineToApplication”
  • Trước </configuration> thêm phần dưới đây

Trong Tridion \ config \ Tridion.ContentManager.config - Cung cấp giá trị cho transactionTimeout trong vài giây < phiên transactionTimeout = "3600" />

Trong Tridion \ bin \ TcmServiceHost.exe.config - thay đổi CoreService_netTcpBinding ràng buộc

<binding name="CoreService_netTcpBinding" 
transactionFlow="true" 
transactionProtocol="WSAtomicTransaction11" 
maxReceivedMessageSize="2147483647" 
closeTimeout="00:30:00" 
openTimeout="00:30:00" 
receiveTimeout="00:30:00" 
sendTimeout="00:30:00"> 
  • Thêm dòng sau trước khi < serviceTimeouts transactionTimeout = "00:30:00" />

trong Tridion \ web \ WebUI \ webroot \ Web.config - thay đổi CoreService_netTcpBinding ràng buộc

<binding name="TcmNetTcpBinding" 
maxBufferSize="2147483647" 
maxReceivedMessageSize="2147483647" 
maxBufferPoolSize="2147483647" 
closeTimeout="00:30:00" 
openTimeout="00:30:00" 
receiveTimeout="00:30:00" 
sendTimeout="00:30:00" 
transactionFlow="true" 
transactionProtocol="WSAtomicTransaction11"> 

này đặt timeout của bạn đến 30 phút.

+0

Ứng dụng có áp dụng cho 2013sp1 không? Không thể tìm thấy CoreService_netTcpBinding trong web \ WebUI \ WebRoot \ Web.config – esteewhy

3

Đây là thời gian chờ giao dịch. Nếu bạn đang phát hành thông qua GUI bạn có thể thử:

  • mở "% TRIDION_HOME% \ Web \ WebUI \ webroot \ web.config"
  • Đến System.ServiceModel -> bindings -> netTcpBinding -> ràng buộc ("TcmNetTcpBinding")
  • Thay đổi "readerQuotas" giá trị cho một cái gì đó như thế này:

readerQuotas maxArrayLength = "10.485.760" maxBytesPerRead = "5120" maxdepth = "32" maxNameTableCharCount = "81.920" maxStringContentLength =" 10485760 "/>

+0

Điều đó dường như giúp tôi tiến gần hơn một chút, có vẻ như Dịch vụ cốt lõi hiện đã hết thời gian. Có cách nào để tăng thời gian chờ giao dịch cho phần này của chuỗi không? –

+0

@ChrisSummers Có, bạn có thể tăng nó ở đây, nhưng có thể bạn sẽ phải tăng ở phía máy chủ. Bạn có thể đăng một ngoại lệ mới mà bạn đang nhận được không? –

+0

Chúng tôi dường như có 3 sai sót trong bản ghi sự kiện: The First ______________________________________________________________ Một lỗi cơ sở dữ liệu xảy ra trong khi thực hiện Stored Procedure "TCM_QUEUE_MESSAGES_READ". Hết hạn. Khoảng thời gian chờ trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi. Component: Tridion.ContentManager.Publishing ERRORCODE: 0 User: NT AUTHORITY \ SYSTEM –

1

Dựa trên nhận xét của bạn, thời gian chờ này rõ ràng là trên cơ sở dữ liệu. Thông báo về thủ tục lưu trữ nói điều này. Khi thời gian chờ cơ sở dữ liệu xảy ra, sau đó hủy bỏ giao dịch và đóng socket có lẽ là không thể tránh khỏi.

Trên máy chủ Tridion CM, bạn có thể điều chỉnh cài đặt thời gian chờ trong snap-in quản lý Tridion. Trong nút "cài đặt thời gian chờ" có một cặp có thể có liên quan.

Mặc dù vậy, mặc định cho những điều này là khá dài và nếu bạn đánh chúng, thì tôi khuyên bạn nên tìm nguyên nhân gốc rễ. Trước tiên, tôi sẽ kiểm tra xem thống kê của trình tối ưu hóa có đang được duy trì chính xác hay không.

2

Mở TcmServiceHost.exe.config nằm trong thư mục "C: \ Program Files (x86) \ Tridion \ Bin". Naviagte đến cấu hình-> system.serviceModel-> behaviors-> serviceBehaviors-> behavior-> Nút. Thêm nút sau

<serviceTimeouts transactionTimeout="00:10:00" /> 

Ngoài ra hãy thay đổi này:

  1. mở web.config nằm tại "% TRIDION_HOME% \ Web \ WebUI \ Webroot"
  2. Navigate to hệ thống.serviceModel -> bindings -> netTcpBinding -> ràng buộc ("TcmNetTcpBinding")
  3. Thay thế "readerQuotas" nút với điều này:

    < readerQuotas maxArrayLength = "10.485.760" maxBytesPerRead = "5120" maxdepth = "32" maxNameTableCharCount = "81.920" maxStringContentLength = "10.485.760" />

Nếu điều này không làm việc sau đó thử cấu hình này:

<readerQuotas maxArrayLength="10485760" maxStringContentLength="10485760"/>