backlog PO SO

TRUNCATE TABLE MEW_PEWC_SUPPLY_DEMAND_TMP;
  INSERT INTO MEW_PEWC_SUPPLY_DEMAND_TMP
    (ORGANIZATION_ID
    ,INVENTORY_ITEM_ID
    ,ONHAND
    ,RESERVED_ONHAND
    ,INTRANSIT_ONHAND
    ,BACKLOG_PO_QTY
    ,BACKLOG_SO_QTY
    ,DATA_GENERATION_DATE)
    SELECT ORGANIZATION_ID
          ,INVENTORY_ITEM_ID
          ,ONHAND
          ,RESERVED_ONHAND
          ,INTRANSIT_ONHAND
          ,BACKLOG_PO_QTY
          ,BACKLOG_SO_QTY
          ,SYSDATE
      FROM (SELECT MR.ORGANIZATION_ID ORGANIZATION_ID
                  ,MR.INVENTORY_ITEM_ID INVENTORY_ITEM_ID
                  ,0 ONHAND
                  ,SUM(MR.RESERVATION_QUANTITY) RESERVED_ONHAND
                  ,0 INTRANSIT_ONHAND
                  ,0 BACKLOG_PO_QTY
                  ,0 BACKLOG_SO_QTY
              FROM apps.MTL_RESERVATIONS MR
             WHERE MR.ORGANIZATION_ID BETWEEN 236 AND 242
             GROUP BY MR.ORGANIZATION_ID
                     ,MR.INVENTORY_ITEM_ID
            HAVING SUM(MR.RESERVATION_QUANTITY) <> 0
            UNION ALL
            SELECT MQD.ORGANIZATION_ID
                  ,MQD.INVENTORY_ITEM_ID
                  ,SUM(MQD.TRANSACTION_QUANTITY) ONHAND
                  ,0 RESERVED_ONHAND
                  ,0 INTRANSIT_ONHAND
                  ,0 BACKLOG_PO_QTY
                  ,0 BACKLOG_SO_QTY
              FROM apps.MTL_ONHAND_QUANTITIES_DETAIL MQD
             WHERE MQD.ORGANIZATION_ID BETWEEN 236 AND 242
             GROUP BY MQD.ORGANIZATION_ID
                     ,MQD.INVENTORY_ITEM_ID
            HAVING SUM(MQD.TRANSACTION_QUANTITY) <> 0
            UNION ALL
            SELECT MQD.ORGANIZATION_ID
                  ,MQD.INVENTORY_ITEM_ID
                  ,0 ONHAND
                  ,0 RESERVED_ONHAND
                  ,SUM(MQD.TRANSACTION_QUANTITY) INTRANSIT_ONHAND
                  ,0 BACKLOG_PO_QTY
                  ,0 BACKLOG_SO_QTY
              FROM apps.MTL_ONHAND_QUANTITIES_DETAIL MQD
                  ,apps.MTL_SECONDARY_INVENTORIES    MSI
             WHERE MQD.ORGANIZATION_ID BETWEEN 236 AND 242
               AND MQD.ORGANIZATION_ID = MSI.ORGANIZATION_ID
               AND MQD.SUBINVENTORY_CODE = MSI.SECONDARY_INVENTORY_NAME
               AND MSI.ATTRIBUTE1='2'
             GROUP BY MQD.ORGANIZATION_ID
                     ,MQD.INVENTORY_ITEM_ID
            HAVING SUM(MQD.TRANSACTION_QUANTITY) <> 0
            UNION ALL
            SELECT PLLA.SHIP_TO_ORGANIZATION_ID ORGANIZTAION_ID
                  ,PLA.ITEM_ID
                  ,0 ONHAND
                  ,0 RESERVED_ONHAND
                  ,0 INTRANSIT_ONHAND
                  ,SUM(PLLA.QUANTITY - PLLA.QUANTITY_RECEIVED) BACKLOG_PO_QTY
                  ,0 BACKLOG_SO_QTY
              FROM apps.PO_HEADERS_ALL        PHA
                  ,apps.PO_LINES_ALL          PLA
                  ,apps.PO_LINE_LOCATIONS_ALL PLLA
             WHERE PHA.PO_HEADER_ID = PLA.PO_HEADER_ID
               AND PLA.PO_LINE_ID = PLLA.PO_LINE_ID
               AND PHA.AUTHORIZATION_STATUS = 'APPROVED'
               AND PHA.TYPE_LOOKUP_CODE = 'STANDARD'
               AND NVL(PLLA.CANCEL_FLAG
                      ,'N') <> 'Y'
               AND NVL(PLLA.CLOSED_CODE
                      ,'N')  NOT IN ('CLOSED'
                       ,'FINALLY CLOSED'
                       ,'CLOSED FOR RECEIVING'
                       ,'CLOSED FOR INVOICE')
               AND PHA.ORG_ID BETWEEN 236 AND 242
             GROUP BY PLLA.SHIP_TO_ORGANIZATION_ID
                     ,PLA.ITEM_ID
            HAVING SUM(PLLA.QUANTITY - PLLA.QUANTITY_RECEIVED) <> 0
            UNION ALL
            SELECT OOL.SHIP_FROM_ORG_ID
                  ,OOL.INVENTORY_ITEM_ID
                  ,0 ONHAND
                  ,0 RESERVED_ONHAND
                  ,0 INTRANSIT_ONHAND
                  ,0 BACKLOG_PO_QTY
                  ,SUM(OOL.ORDERED_QUANTITY - NVL(OOL.SHIPPED_QUANTITY
                                                 ,0)) BACKLOG_SO_QTY
              FROM apps.OE_ORDER_HEADERS_ALL OOH
                  ,apps.OE_ORDER_LINES_ALL   OOL
             WHERE OOH.SHIP_FROM_ORG_ID BETWEEN 236 AND 242
               AND OOH.HEADER_ID = OOL.HEADER_ID
               AND OOH.FLOW_STATUS_CODE = 'BOOKED'
               AND OOL.ORDERED_QUANTITY - NVL(OOL.SHIPPED_QUANTITY
                                             ,0) > 0
             GROUP BY OOL.SHIP_FROM_ORG_ID
                     ,OOL.INVENTORY_ITEM_ID);
  TRUNCATE TABLE MEW_PEWC_SUPPLY_DEMAND;
  INSERT INTO MEW_PEWC_SUPPLY_DEMAND
    (ORGANIZATION_ID
    ,INVENTORY_ITEM_ID
    ,ONHAND
    ,RESERVED_ONHAND
    ,INTRANSIT_ONHAND
    ,BACKLOG_PO_QTY
    ,BACKLOG_SO_QTY
    ,DATA_GENERATION_DATE)
    SELECT ORGANIZATION_ID
          ,INVENTORY_ITEM_ID
          ,SUM(ONHAND)
          ,SUM(RESERVED_ONHAND)
          ,SUM(INTRANSIT_ONHAND)
          ,SUM(BACKLOG_PO_QTY)
          ,SUM(BACKLOG_SO_QTY)
          ,SYSDATE
      FROM MEW_PEWC_SUPPLY_DEMAND_TMP
     GROUP BY ORGANIZATION_ID
             ,INVENTORY_ITEM_ID;
【判断题】 1、需求评审会由PO组织,FO\PO\SO\架构必须参会,会上对座舱内部需求进行是否涉及信号变更的评审(4分) A正确 B错误 【判断题】 2、涉及信号的需求不需要在座舱研发库创建Jira票(4分) A正确 B错误 【判断题】 3、PRD文档的编写是由车型PO来完成(4分) A正确 B错误 【判断题】 4、Jira的需求层级分别是Epic->Feature->Story(4分) A正确 B错误 【判断题】 5、UIUE设计不依赖PRD就可以进行设计开发(4分) A正确 B错误 【判断题】 6、FlymeAuto主线开发不是按照快轨流程来执行的(4分) A正确 B错误 【判断题】 7、不涉及信号变更的需求应该走快轨开发流程,达到快速交付有价值产品的目的,并提高用户满意度(4分) A正确 B错误 【判断题】 8、原始功能需求涉及信号,但当前变更不涉及信号的需求,仍然要按照功能开发流程,等待R基线释放后才能进行开发(4分) A正确 B错误 【判断题】 9、PO建完Feature后就不需要对Feature的状态负责(4分) A正确 B错误 【判断题】 10、RTE是发布版本火车工程师,是快轨流程增加的角色,主要负责制定版本火车发布计划ART,主持PI计划会议(4分) A正确 B错误 【单选题】 11、哪个不是主线开发需求分析的交付物(4分) APRD BUIUE设计图 CFR DPRD评审会议纪要 【单选题】 12、FlymeAuto主线应达到的发版节奏是多久一次(4分) A1个月 B2个月 C3个月 D4个月 【单选题】 13、Feature和Story的关系是什么(4分) AFeature和Story没有关系 BFeature被Story实现 CStory被Feature实现 DFeature和Story属于平级 【单选题】 14、Feature票的工作流哪个说法是错误的(4分) AFeature票的状态分别是OPEN\APPROVED\HMI DESIGN\READY TO DEV\IN DEV\MRD\CANCELLED\DONE BIN DEV状态前都可以把该Feature票Cancel C状态变成MRD时该Feature票可以Cancel DMRD状态的Feature可以进行变更 【单选题】 15、GP空间存放的是什么需求(4分) A项目需求 B主线需求 C差异化需求 D已开发测试完成并被整理过的平台化需求 【单选题】 16、原始需求在SCRME空间内属于哪一种类型(4分) AInitial Requirement BFeature CStory DRequirement 【单选题】 17、主线开发的流程中,测试最早应该在什么时候介入(4分) A开发交付后 B迭代计划期间 CMRD DPI计划会 【单选题】 18、VED空间存放的是哪一类需求(4分) A原始需求 B用户需求 C项目需求 D外域需求 【单选题】 19、原始需求和评审通过的需求(Feature)在Jira里用哪个issue Links来关联(4分) Ais clone by Bis implemented by Crelates to Dis treated by 【单选题】 20、座舱研发库的在Jira的缩写是什么(4分) ASCRME BSCMIE CSCTV DSCC 【多选题】 21、座舱内部的需求方案评审会的输出有哪些(4分) AFO在DT创建功能需求票 BPO在Jira创建产品需求票 C架构设计方案 DPRD EFR 【多选题】 22、座舱的研发库有几种类型的票(4分) AEpic BFeature CStory DTask ESWRS需求 【多选题】 23、SAFe框架中的ART Flow的铁三角分别是哪些角色(4分) ASPM BRTE C架构师 D模块PO ESO 【多选题】 24、在Jira创建一个需求票,哪些关键属性要填写(4分) A需求描述 B需求来源 C价值描述 D需求类型 E所属模块和域名 【多选题】 25、原始需求的来源有哪些(4分) A领导试驾 B市场问题 C外中心 D魅族 E用户反馈
最新发布
03-28
<think>好的,我现在需要解释SO_BACKLOG参数是什么。首先,我得回忆一下之前用户的问题是关于Netty发送数据到物联网模块时遇到的问题,特别是连接断开后恢复的情况。用户现在想了解SO_BACKLOG的具体作用。 首先,我应该明确SO_BACKLOG是TCP协议中的一个参数,和操作系统的网络栈有关。记得在Netty中配置ServerBootstrap的时候,会用到这个参数。可能需要解释它的作用,比如它控制的是连接请求队列的长度。 接下来,我需要分清楚半连接队列和全连接队列。半连接队列对应的是SYN队列,当客户端发送SYN但还没有完成三次握手时的状态;全连接队列则是已完成握手但尚未被应用接受的连接。SO_BACKLOG通常影响的是全连接队列的最大长度。 但不同操作系统可能有不同的实现方式,比如Linux中,SO_BACKLOG可能会影响SYN队列和已接受队列的长度,具体要看内核版本和参数设置。可能需要提到这一点,避免用户混淆。 然后需要说明在Netty中如何设置这个参数,比如使用.option(ChannelOption.SO_BACKLOG, 128)。这时候要提醒用户,这个值的设置需要根据实际负载和操作系统限制来调整,设置过小可能导致连接被拒绝,过大可能占用过多资源。 还需要举一个例子,比如当并发连接数突然增加时,如果队列已满,新的连接请求会被拒绝,导致客户端无法连接。这时候用户可能会看到连接超时或拒绝的错误。 另外,可能需要提到与操作系统限制的关系,比如Linux中的somaxconn参数,需要确保应用设置的SO_BACKLOG不超过操作系统的限制。可以通过sysctl命令查看和调整这些参数。 最后,结合用户之前的问题,当断开一个连接后恢复响应,可能是因为连接队列满,导致新的连接无法处理,断开一个后队列腾出空间,新的连接得以处理。因此合理设置SO_BACKLOG有助于避免这种情况。 需要确保用简洁明了的中文解释,避免技术术语过于晦涩,同时结构清晰,分点说明,帮助用户理解。同时提醒用户在实际应用中如何调整和监控这个参数,以及可能的注意事项。</think>**SO_BACKLOG参数**是TCP网络编程中的核心参数,它直接决定了服务端处理连接请求的缓冲能力。以下是深入解析: --- ### 一、本质作用 1. **队列管理机制** 当客户端发起TCP连接时,服务端内核会维护两个队列: - **半连接队列(SYN队列)** 存储收到SYN包但未完成三次握手的连接(`SYN_RECEIVED`状态)。 - **全连接队列(ACCEPT队列)** 存储已完成握手但未被应用层接受的连接(`ESTABLISHED`状态)。 **`SO_BACKLOG`** 参数主要控制**全连接队列的最大长度**。 2. **Netty中的体现** 在Netty服务端配置中设置: ```java ServerBootstrap b = new ServerBootstrap(); b.option(ChannelOption.SO_BACKLOG, 1024); // 关键配置点 ``` --- ### 二、工作流程(以Linux为例) 1. 客户端发送`SYN` → 服务端将连接放入**SYN队列** 2. 完成三次握手 → 连接迁移至**ACCEPT队列** 3. Netty的`bossGroup`线程调用`accept()` → 从ACCEPT队列取出连接 4. **队列溢出后果**: - **SYN队列满**:直接丢弃新SYN包(客户端重试) - **ACCEPT队列满**:忽略新完成的握手(客户端收不到响应) --- ### 三、配置注意事项 | 配置维度 | 说明 | |----------------|----------------------------------------------------------------------| | **操作系统层** | Linux通过`net.core.somaxconn`定义全局最大值(默认128) | | **应用层** | Netty中`SO_BACKLOG`值应 ≤ `somaxconn`(需`sysctl -w net.core.somaxconn=2048`调整) | | **经验值** | 高并发场景建议设置为`4096`,需配合压力测试验证 | --- ### 四、问题诊断方法 1. **监控队列状态** ```bash # Linux查看队列溢出情况 netstat -s | grep -E "SYNs|listen" ``` 输出示例: ``` 1890 times the listen queue of a socket overflowed 3290 SYNs to LISTEN sockets dropped ``` 2. **Netty日志增强** 启用DEBUG日志观察连接接受延迟: ```java ch.pipeline().addLast(new LoggingHandler(LogLevel.DEBUG)); ``` --- ### 五、典型问题案例 **现象**:服务端CPU利用率低但连接成功率骤降 **根因**:`SO_BACKLOG=512`,而实际每秒新连接达2000+,ACCEPT队列持续溢出 **解决方案**: - 调整`somaxconn=65535` - 设置`SO_BACKLOG=32768` - 扩容`bossGroup`线程数(需配合多端口监听) --- 通过合理配置`SO_BACKLOG`并结合操作系统参数优化,可显著提升服务端在高并发场景下的连接处理能力。建议在性能测试中通过逐步加压,找到业务场景下的最佳参数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值